Bug 1828066 - Update to Glean v52.7.0 r=chutten,supply-chain-reviewers

Differential Revision: https://phabricator.services.mozilla.com/D177617
This commit is contained in:
Jan-Erik Rediger 2023-05-11 11:25:33 +00:00
Родитель c84e710613
Коммит 9db3021bfb
26 изменённых файлов: 154 добавлений и 27 удалений

8
Cargo.lock сгенерированный
Просмотреть файл

@ -2211,9 +2211,9 @@ dependencies = [
[[package]] [[package]]
name = "glean" name = "glean"
version = "52.6.0" version = "52.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1ca7a95d864d1302298573c801cb926d7bc4bbf4112545a1e24a0a27c384368b" checksum = "cb5fc2dc8615ab49bfa879d64a02565b459881b72023ff39aca75e5581825695"
dependencies = [ dependencies = [
"chrono", "chrono",
"crossbeam-channel", "crossbeam-channel",
@ -2231,9 +2231,9 @@ dependencies = [
[[package]] [[package]]
name = "glean-core" name = "glean-core"
version = "52.6.0" version = "52.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2b45b505ad6e7b569135e44dd84ccac982683054e61dfa2a7906b18510b1993c" checksum = "3493e4f4df45199762f43a6d2298fa9d885fa5ddc9efdc118a41b38c69c7ad59"
dependencies = [ dependencies = [
"android_logger", "android_logger",
"bincode", "bincode",

Просмотреть файл

@ -36,7 +36,7 @@ allprojects {
topsrcdir = gradle.mozconfig.topsrcdir topsrcdir = gradle.mozconfig.topsrcdir
topobjdir = gradle.mozconfig.topobjdir topobjdir = gradle.mozconfig.topobjdir
gleanVersion = "52.6.0" gleanVersion = "52.7.0"
if (gleanVersion != getRustVersionFor("glean")) { if (gleanVersion != getRustVersionFor("glean")) {
throw new StopExecutionException("Mismatched Glean version, expected: ${gleanVersion}," + throw new StopExecutionException("Mismatched Glean version, expected: ${gleanVersion}," +
" found ${getRustVersionFor("glean")}") " found ${getRustVersionFor("glean")}")

8
gfx/wr/Cargo.lock сгенерированный
Просмотреть файл

@ -940,9 +940,9 @@ dependencies = [
[[package]] [[package]]
name = "glean" name = "glean"
version = "52.6.0" version = "52.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1ca7a95d864d1302298573c801cb926d7bc4bbf4112545a1e24a0a27c384368b" checksum = "cb5fc2dc8615ab49bfa879d64a02565b459881b72023ff39aca75e5581825695"
dependencies = [ dependencies = [
"chrono", "chrono",
"crossbeam-channel", "crossbeam-channel",
@ -960,9 +960,9 @@ dependencies = [
[[package]] [[package]]
name = "glean-core" name = "glean-core"
version = "52.6.0" version = "52.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2b45b505ad6e7b569135e44dd84ccac982683054e61dfa2a7906b18510b1993c" checksum = "3493e4f4df45199762f43a6d2298fa9d885fa5ddc9efdc118a41b38c69c7ad59"
dependencies = [ dependencies = [
"android_logger", "android_logger",
"bincode", "bincode",

Просмотреть файл

@ -52,7 +52,7 @@ svg_fmt = "0.4"
tracy-rs = "0.1.2" tracy-rs = "0.1.2"
derive_more = { version = "0.99", default-features = false, features = ["add_assign"] } derive_more = { version = "0.99", default-features = false, features = ["add_assign"] }
etagere = "0.2.6" etagere = "0.2.6"
glean = "52.6.0" glean = "52.7.0"
firefox-on-glean = { version = "0.1.0", optional = true } firefox-on-glean = { version = "0.1.0", optional = true }
swgl = { path = "../swgl", optional = true } swgl = { path = "../swgl", optional = true }
topological-sort = "0.1" topological-sort = "0.1"

Просмотреть файл

@ -25,7 +25,7 @@ tracy-rs = "0.1.2"
log = "0.4" log = "0.4"
lazy_static = "1" lazy_static = "1"
fxhash = "0.2.1" fxhash = "0.2.1"
glean = { version = "52.6.0", optional = true } glean = { version = "52.7.0", optional = true }
firefox-on-glean = { version = "0.1.0", optional = true } firefox-on-glean = { version = "0.1.0", optional = true }
serde = { optional = true, version = "1.0", features = ["serde_derive"] } serde = { optional = true, version = "1.0", features = ["serde_derive"] }

Просмотреть файл

@ -138,7 +138,7 @@ pth:xpcom/geckoprocesstypes_generator
pth:xpcom/idl-parser pth:xpcom/idl-parser
# glean-sdk may not be installable if a wheel isn't available # glean-sdk may not be installable if a wheel isn't available
# and it has to be built from source. # and it has to be built from source.
pypi-optional:glean-sdk==52.6.0:telemetry will not be collected pypi-optional:glean-sdk==52.7.0:telemetry will not be collected
# Mach gracefully handles the case where `psutil` is unavailable. # Mach gracefully handles the case where `psutil` is unavailable.
# We aren't (yet) able to pin packages in automation, so we have to # We aren't (yet) able to pin packages in automation, so we have to
# support down to the oldest locally-installed version (5.4.2). # support down to the oldest locally-installed version (5.4.2).

Просмотреть файл

@ -149,15 +149,15 @@ user-login = "jrmuizel"
user-name = "Jeff Muizelaar" user-name = "Jeff Muizelaar"
[[publisher.glean]] [[publisher.glean]]
version = "52.6.0" version = "52.7.0"
when = "2023-04-20" when = "2023-05-10"
user-id = 48 user-id = 48
user-login = "badboy" user-login = "badboy"
user-name = "Jan-Erik Rediger" user-name = "Jan-Erik Rediger"
[[publisher.glean-core]] [[publisher.glean-core]]
version = "52.6.0" version = "52.7.0"
when = "2023-04-20" when = "2023-05-10"
user-id = 48 user-id = 48
user-login = "badboy" user-login = "badboy"
user-name = "Jan-Erik Rediger" user-name = "Jan-Erik Rediger"

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

2
third_party/rust/glean-core/Cargo.toml поставляемый
Просмотреть файл

@ -13,7 +13,7 @@
edition = "2021" edition = "2021"
rust-version = "1.62" rust-version = "1.62"
name = "glean-core" name = "glean-core"
version = "52.6.0" version = "52.7.0"
authors = [ authors = [
"Jan-Erik Rediger <jrediger@mozilla.com>", "Jan-Erik Rediger <jrediger@mozilla.com>",
"The Glean Team <glean-team@mozilla.com>", "The Glean Team <glean-team@mozilla.com>",

2
third_party/rust/glean-core/src/core/mod.rs поставляемый
Просмотреть файл

@ -112,6 +112,7 @@ where
/// app_build: "".into(), /// app_build: "".into(),
/// use_core_mps: false, /// use_core_mps: false,
/// trim_data_to_registered_pings: false, /// trim_data_to_registered_pings: false,
/// log_level: None,
/// }; /// };
/// let mut glean = Glean::new(cfg).unwrap(); /// let mut glean = Glean::new(cfg).unwrap();
/// let ping = PingType::new("sample", true, false, vec![]); /// let ping = PingType::new("sample", true, false, vec![]);
@ -293,6 +294,7 @@ impl Glean {
app_build: "Unknown".into(), app_build: "Unknown".into(),
use_core_mps: false, use_core_mps: false,
trim_data_to_registered_pings: false, trim_data_to_registered_pings: false,
log_level: None,
}; };
let mut glean = Self::new(cfg).unwrap(); let mut glean = Self::new(cfg).unwrap();

Просмотреть файл

@ -6,8 +6,10 @@ use once_cell::sync::Lazy;
use std::sync::atomic::{AtomicBool, Ordering}; use std::sync::atomic::{AtomicBool, Ordering};
use std::sync::RwLock; use std::sync::RwLock;
use std::thread; use std::thread;
use std::time::Duration;
use super::{DispatchError, DispatchGuard, Dispatcher}; use super::{DispatchError, DispatchGuard, Dispatcher};
use crossbeam_channel::RecvTimeoutError;
#[cfg(feature = "preinit_million_queue")] #[cfg(feature = "preinit_million_queue")]
pub const GLOBAL_DISPATCHER_LIMIT: usize = 1000000; pub const GLOBAL_DISPATCHER_LIMIT: usize = 1000000;
@ -76,6 +78,11 @@ pub fn block_on_queue() {
guard().block_on_queue(); guard().block_on_queue();
} }
/// Block until all tasks prior to this call are processed, with a timeout.
pub fn block_on_queue_timeout(timeout: Duration) -> Result<(), RecvTimeoutError> {
guard().block_on_queue_timeout(timeout)
}
/// Starts processing queued tasks in the global dispatch queue. /// Starts processing queued tasks in the global dispatch queue.
/// ///
/// This function blocks until queued tasks prior to this call are finished. /// This function blocks until queued tasks prior to this call are finished.

Просмотреть файл

@ -29,9 +29,10 @@ use std::{
Arc, Arc,
}, },
thread::{self, JoinHandle}, thread::{self, JoinHandle},
time::Duration,
}; };
use crossbeam_channel::{bounded, unbounded, SendError, Sender}; use crossbeam_channel::{bounded, unbounded, RecvTimeoutError, SendError, Sender};
use thiserror::Error; use thiserror::Error;
pub use global::*; pub use global::*;
@ -161,6 +162,26 @@ impl DispatchGuard {
.expect("Failed to receive message on single-use channel"); .expect("Failed to receive message on single-use channel");
} }
/// Block on the task queue emptying, with a timeout.
fn block_on_queue_timeout(&self, timeout: Duration) -> Result<(), RecvTimeoutError> {
let (tx, rx) = crossbeam_channel::bounded(0);
// We explicitly don't use `self.launch` here.
// We always put this task on the unbounded queue.
// The pre-init queue might be full before its flushed, in which case this would panic.
// Blocking on the queue can only work if it is eventually flushed anyway.
let task = Command::Task(Box::new(move || {
tx.send(())
.expect("(worker) Can't send message on single-use channel");
}));
self.sender
.send(task)
.expect("Failed to launch the blocking task");
rx.recv_timeout(timeout)
}
fn kill(&mut self) -> Result<(), DispatchError> { fn kill(&mut self) -> Result<(), DispatchError> {
// We immediately stop queueing in the pre-init buffer. // We immediately stop queueing in the pre-init buffer.
let old_val = self.queue_preinit.swap(false, Ordering::SeqCst); let old_val = self.queue_preinit.swap(false, Ordering::SeqCst);

Просмотреть файл

@ -238,7 +238,7 @@ impl EventDatabase {
db.insert( db.insert(
store_name, store_name,
file.lines() file.lines()
.filter_map(|line| line.ok()) .map_while(Result::ok)
.filter_map(|line| serde_json::from_str::<StoredEvent>(&line).ok()) .filter_map(|line| serde_json::from_str::<StoredEvent>(&line).ok())
.collect(), .collect(),
); );

11
third_party/rust/glean-core/src/glean.udl поставляемый
Просмотреть файл

@ -69,6 +69,17 @@ dictionary InternalConfiguration {
string app_build; string app_build;
boolean use_core_mps; boolean use_core_mps;
boolean trim_data_to_registered_pings; boolean trim_data_to_registered_pings;
LevelFilter? log_level;
};
// An enum representing the different logging levels for the `log` crate.
enum LevelFilter {
"Off",
"Error",
"Warn",
"Info",
"Debug",
"Trace",
}; };
// Values for the `client_info` metrics. // Values for the `client_info` metrics.

Просмотреть файл

@ -24,6 +24,9 @@ pub struct AdditionalMetrics {
/// Time waited for the uploader at shutdown. /// Time waited for the uploader at shutdown.
pub shutdown_wait: TimingDistributionMetric, pub shutdown_wait: TimingDistributionMetric,
/// Time waited for the dispatcher to unblock during shutdown.
pub shutdown_dispatcher_wait: TimingDistributionMetric,
} }
impl CoreMetrics { impl CoreMetrics {
@ -97,6 +100,18 @@ impl AdditionalMetrics {
}, },
TimeUnit::Millisecond, TimeUnit::Millisecond,
), ),
shutdown_dispatcher_wait: TimingDistributionMetric::new(
CommonMetricData {
name: "shutdown_dispatcher_wait".into(),
category: "glean.validation".into(),
send_in_pings: vec!["metrics".into()],
lifetime: Lifetime::Ping,
disabled: false,
dynamic_label: None,
},
TimeUnit::Millisecond,
),
} }
} }
} }

35
third_party/rust/glean-core/src/lib.rs поставляемый
Просмотреть файл

@ -25,6 +25,7 @@ use std::thread;
use std::time::Duration; use std::time::Duration;
use crossbeam_channel::unbounded; use crossbeam_channel::unbounded;
use log::{self, LevelFilter};
use once_cell::sync::{Lazy, OnceCell}; use once_cell::sync::{Lazy, OnceCell};
use uuid::Uuid; use uuid::Uuid;
@ -125,6 +126,8 @@ pub struct InternalConfiguration {
pub use_core_mps: bool, pub use_core_mps: bool,
/// Whether Glean should, on init, trim its event storage to only the registered pings. /// Whether Glean should, on init, trim its event storage to only the registered pings.
pub trim_data_to_registered_pings: bool, pub trim_data_to_registered_pings: bool,
/// The internal logging level.
pub log_level: Option<LevelFilter>,
} }
/// Launches a new task on the global dispatch queue with a reference to the Glean singleton. /// Launches a new task on the global dispatch queue with a reference to the Glean singleton.
@ -306,6 +309,11 @@ fn initialize_inner(
let upload_enabled = cfg.upload_enabled; let upload_enabled = cfg.upload_enabled;
let trim_data_to_registered_pings = cfg.trim_data_to_registered_pings; let trim_data_to_registered_pings = cfg.trim_data_to_registered_pings;
// Set the internal logging level.
if let Some(level) = cfg.log_level {
log::set_max_level(level)
}
let glean = match Glean::new(cfg) { let glean = match Glean::new(cfg) {
Ok(glean) => glean, Ok(glean) => glean,
Err(err) => { Err(err) => {
@ -557,8 +565,31 @@ pub fn shutdown() {
glean.set_dirty_flag(false); glean.set_dirty_flag(false);
}); });
// We need to wait for above task to finish. // We need to wait for above task to finish,
dispatcher::block_on_queue(); // but we also don't wait around forever.
//
// TODO: Make the timeout configurable?
// The default hang watchdog on Firefox waits 60s,
// Glean's `uploader_shutdown` further below waits up to 30s.
let timer_id = core::with_glean(|glean| {
glean
.additional_metrics
.shutdown_dispatcher_wait
.start_sync()
});
if dispatcher::block_on_queue_timeout(Duration::from_secs(10)).is_err() {
log::error!(
"Timeout while blocking on the dispatcher. No further shutdown cleanup will happen."
);
return;
}
let stop_time = time::precise_time_ns();
core::with_glean(|glean| {
glean
.additional_metrics
.shutdown_dispatcher_wait
.set_stop_and_accumulate(glean, timer_id, stop_time);
});
if let Err(e) = dispatcher::shutdown() { if let Err(e) = dispatcher::shutdown() {
log::error!("Can't shutdown dispatcher thread: {:?}", e); log::error!("Can't shutdown dispatcher thread: {:?}", e);

Просмотреть файл

@ -59,6 +59,7 @@ pub fn new_glean(tempdir: Option<tempfile::TempDir>) -> (Glean, tempfile::TempDi
app_build: "Unknown".into(), app_build: "Unknown".into(),
use_core_mps: false, use_core_mps: false,
trim_data_to_registered_pings: false, trim_data_to_registered_pings: false,
log_level: None,
}; };
let glean = Glean::new(cfg).unwrap(); let glean = Glean::new(cfg).unwrap();

2
third_party/rust/glean/.cargo-checksum.json поставляемый
Просмотреть файл

@ -1 +1 @@
{"files":{"Cargo.toml":"32bdc5d1ae4465c672d2b38766643729acd3185977ccf212e376d962231ef90b","LICENSE":"1f256ecad192880510e84ad60474eab7589218784b9a50bc7ceee34c2b91f1d5","README.md":"5627cc81e6187ab6c2b4dff061af16d559edcab64ba786bac39daa69c703c595","src/common_test.rs":"de47b53dcca37985c0a2b8c02daecbf32309aa54f5a4dd9290719c2c1fd0fa55","src/configuration.rs":"4ca9be0a49a9c50f4ebe868d4bfa04fe27619c871a436911f850b4dcf6e7a7b2","src/core_metrics.rs":"dd17b482613894af08b51a2cff6dc1e84a6dbd853c14a55566e6698348941ced","src/lib.rs":"6b486cda2c92ab49dbc26533f1aac5b0b1a071b227ddd9b9e85c0edb768fe5bc","src/net/http_uploader.rs":"43812a70d19a38e8d7a093c8076c2b6345372c3c861b0f3511428762700a65e0","src/net/mod.rs":"e36e170a8e53530f8705988eea694ed7c55f50bb0ce403c0facbfb75ce03ac7f","src/private/event.rs":"02bbebf545695812e5055741cc0b5f3c99eda2039e684e26fcdd5f087ed15fe3","src/private/mod.rs":"eb8fe4e588bb32a54617324db39319920c627e6fc23c23cf4da5c17c63e0afed","src/private/ping.rs":"cbdc57f41fc9d46e56b4dfff91ac683753d1f8b3ecd0aa9bc3419e3595b8b81b","src/system.rs":"6eae5b41c15eba9cad6dbd116abe3519ee3e1fe034e79bdd692b029829a8c384","src/test.rs":"5cd8befc816333970d8068c449e945866b0530eecfa630109ee154b43b1ac62f","tests/common/mod.rs":"37cd4c48e140c793b852ae09fb3e812da28a4412977295015bcbffd632fcf294","tests/init_fails.rs":"28fd7726e76ca1295eb0905eca0b2ec65b0accfa28432c9ff90ec8f92616fc79","tests/never_init.rs":"1f33b8ce7ca3514b57b48cc16d98408974c85cf8aa7d13257ffc2ad878ebb295","tests/no_time_to_init.rs":"e7df75b47897fbf2c860a2e1c1c225b57598b8d1a39125ca897fe8d825bf0338","tests/overflowing_preinit.rs":"7ad4b2274dd9240b53430859a4eb1d2597cf508a5a678333f3d3abbadd2ed4a7","tests/persist_ping_lifetime.rs":"81415dc1d74743f02269f0d0dfa524003147056853f080276972e64a0b761d3c","tests/persist_ping_lifetime_nopanic.rs":"18379d3ffbf4a2c8c684c04ff7a0660b86dfbbb447db2d24dfed6073cb7ddf8f","tests/schema.rs":"1b7b19aec54a24c2bdd4738cf33c16802c19c83504c4d0e6bcfc19142877acdb","tests/simple.rs":"b099034b0599bdf4650e0fa09991a8413fc5fbf397755fc06c8963d4c7c8dfa6","tests/test-shutdown-blocking.sh":"9b16a01c190c7062474dd92182298a3d9a27928c8fa990340fdd798e6cdb7ab2","tests/upload_timing.rs":"d044fce7c783133e385671ea37d674e5a1b4120cae7b07708dcd825addfa0ee3"},"package":"1ca7a95d864d1302298573c801cb926d7bc4bbf4112545a1e24a0a27c384368b"} {"files":{"Cargo.toml":"bb7825ea1f64c8c1d61c3dd696263f14335902b25c99fd5ec53d87c360e535e7","LICENSE":"1f256ecad192880510e84ad60474eab7589218784b9a50bc7ceee34c2b91f1d5","README.md":"5627cc81e6187ab6c2b4dff061af16d559edcab64ba786bac39daa69c703c595","src/common_test.rs":"de47b53dcca37985c0a2b8c02daecbf32309aa54f5a4dd9290719c2c1fd0fa55","src/configuration.rs":"883b327fdad366e414ece83f65ab6b0216ab819c7854b382acf91b702b5a9697","src/core_metrics.rs":"dd17b482613894af08b51a2cff6dc1e84a6dbd853c14a55566e6698348941ced","src/lib.rs":"7cc249fc8f674958b91e6259225e858dfcd2b9b9dbdaecfab4d0ca85ad44129a","src/net/http_uploader.rs":"43812a70d19a38e8d7a093c8076c2b6345372c3c861b0f3511428762700a65e0","src/net/mod.rs":"e36e170a8e53530f8705988eea694ed7c55f50bb0ce403c0facbfb75ce03ac7f","src/private/event.rs":"02bbebf545695812e5055741cc0b5f3c99eda2039e684e26fcdd5f087ed15fe3","src/private/mod.rs":"eb8fe4e588bb32a54617324db39319920c627e6fc23c23cf4da5c17c63e0afed","src/private/ping.rs":"cbdc57f41fc9d46e56b4dfff91ac683753d1f8b3ecd0aa9bc3419e3595b8b81b","src/system.rs":"6eae5b41c15eba9cad6dbd116abe3519ee3e1fe034e79bdd692b029829a8c384","src/test.rs":"68e046309f943aacc45af9e8bb0687c5b49da32f3a55050a3724f0be0a91c61c","tests/common/mod.rs":"37cd4c48e140c793b852ae09fb3e812da28a4412977295015bcbffd632fcf294","tests/init_fails.rs":"28fd7726e76ca1295eb0905eca0b2ec65b0accfa28432c9ff90ec8f92616fc79","tests/never_init.rs":"1f33b8ce7ca3514b57b48cc16d98408974c85cf8aa7d13257ffc2ad878ebb295","tests/no_time_to_init.rs":"e7df75b47897fbf2c860a2e1c1c225b57598b8d1a39125ca897fe8d825bf0338","tests/overflowing_preinit.rs":"7ad4b2274dd9240b53430859a4eb1d2597cf508a5a678333f3d3abbadd2ed4a7","tests/persist_ping_lifetime.rs":"81415dc1d74743f02269f0d0dfa524003147056853f080276972e64a0b761d3c","tests/persist_ping_lifetime_nopanic.rs":"18379d3ffbf4a2c8c684c04ff7a0660b86dfbbb447db2d24dfed6073cb7ddf8f","tests/schema.rs":"1b7b19aec54a24c2bdd4738cf33c16802c19c83504c4d0e6bcfc19142877acdb","tests/simple.rs":"b099034b0599bdf4650e0fa09991a8413fc5fbf397755fc06c8963d4c7c8dfa6","tests/test-shutdown-blocking.sh":"9b16a01c190c7062474dd92182298a3d9a27928c8fa990340fdd798e6cdb7ab2","tests/upload_timing.rs":"d044fce7c783133e385671ea37d674e5a1b4120cae7b07708dcd825addfa0ee3"},"package":"cb5fc2dc8615ab49bfa879d64a02565b459881b72023ff39aca75e5581825695"}

4
third_party/rust/glean/Cargo.toml поставляемый
Просмотреть файл

@ -13,7 +13,7 @@
edition = "2021" edition = "2021"
rust-version = "1.62" rust-version = "1.62"
name = "glean" name = "glean"
version = "52.6.0" version = "52.7.0"
authors = [ authors = [
"Jan-Erik Rediger <jrediger@mozilla.com>", "Jan-Erik Rediger <jrediger@mozilla.com>",
"The Glean Team <glean-team@mozilla.com>", "The Glean Team <glean-team@mozilla.com>",
@ -43,7 +43,7 @@ features = ["serde"]
version = "0.5" version = "0.5"
[dependencies.glean-core] [dependencies.glean-core]
version = "52.6.0" version = "52.7.0"
[dependencies.inherent] [dependencies.inherent]
version = "1" version = "1"

9
third_party/rust/glean/src/configuration.rs поставляемый
Просмотреть файл

@ -2,6 +2,8 @@
// License, v. 2.0. If a copy of the MPL was not distributed with this // License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at https://mozilla.org/MPL/2.0/. // file, You can obtain one at https://mozilla.org/MPL/2.0/.
use log::LevelFilter;
use crate::net::PingUploader; use crate::net::PingUploader;
use std::path::PathBuf; use std::path::PathBuf;
@ -34,6 +36,8 @@ pub struct Configuration {
/// Unless you know that all your and your libraries' pings are appropriately registered /// Unless you know that all your and your libraries' pings are appropriately registered
/// _before_ init, you shouldn't use this. /// _before_ init, you shouldn't use this.
pub trim_data_to_registered_pings: bool, pub trim_data_to_registered_pings: bool,
/// The internal logging level.
pub log_level: Option<LevelFilter>,
} }
/// Configuration builder. /// Configuration builder.
@ -68,6 +72,9 @@ pub struct Builder {
/// _before_ init, you shouldn't use this. /// _before_ init, you shouldn't use this.
/// Default: `false` /// Default: `false`
pub trim_data_to_registered_pings: bool, pub trim_data_to_registered_pings: bool,
/// Optional: The internal logging level.
/// Default: `None`
pub log_level: Option<LevelFilter>,
} }
impl Builder { impl Builder {
@ -87,6 +94,7 @@ impl Builder {
uploader: None, uploader: None,
use_core_mps: false, use_core_mps: false,
trim_data_to_registered_pings: false, trim_data_to_registered_pings: false,
log_level: None,
} }
} }
@ -102,6 +110,7 @@ impl Builder {
uploader: self.uploader, uploader: self.uploader,
use_core_mps: self.use_core_mps, use_core_mps: self.use_core_mps,
trim_data_to_registered_pings: self.trim_data_to_registered_pings, trim_data_to_registered_pings: self.trim_data_to_registered_pings,
log_level: self.log_level,
} }
} }

1
third_party/rust/glean/src/lib.rs поставляемый
Просмотреть файл

@ -118,6 +118,7 @@ fn initialize_internal(cfg: Configuration, client_info: ClientInfoMetrics) -> Op
app_build: client_info.app_build.clone(), app_build: client_info.app_build.clone(),
use_core_mps: cfg.use_core_mps, use_core_mps: cfg.use_core_mps,
trim_data_to_registered_pings: cfg.trim_data_to_registered_pings, trim_data_to_registered_pings: cfg.trim_data_to_registered_pings,
log_level: cfg.log_level,
}; };
glean_core::glean_initialize(core_cfg, client_info.into(), callbacks); glean_core::glean_initialize(core_cfg, client_info.into(), callbacks);

27
third_party/rust/glean/src/test.rs поставляемый
Просмотреть файл

@ -53,6 +53,7 @@ fn send_a_ping() {
uploader: Some(Box::new(FakeUploader { sender: s })), uploader: Some(Box::new(FakeUploader { sender: s })),
use_core_mps: false, use_core_mps: false,
trim_data_to_registered_pings: false, trim_data_to_registered_pings: false,
log_level: None,
}; };
let _t = new_glean(Some(cfg), true); let _t = new_glean(Some(cfg), true);
@ -142,6 +143,7 @@ fn test_experiments_recording_before_glean_inits() {
uploader: None, uploader: None,
use_core_mps: false, use_core_mps: false,
trim_data_to_registered_pings: false, trim_data_to_registered_pings: false,
log_level: None,
}, },
ClientInfoMetrics::unknown(), ClientInfoMetrics::unknown(),
false, false,
@ -202,6 +204,7 @@ fn sending_of_foreground_background_pings() {
uploader: Some(Box::new(FakeUploader { sender: s })), uploader: Some(Box::new(FakeUploader { sender: s })),
use_core_mps: false, use_core_mps: false,
trim_data_to_registered_pings: false, trim_data_to_registered_pings: false,
log_level: None,
}; };
let _t = new_glean(Some(cfg), true); let _t = new_glean(Some(cfg), true);
@ -284,6 +287,7 @@ fn sending_of_startup_baseline_ping() {
uploader: Some(Box::new(FakeUploader { sender: s })), uploader: Some(Box::new(FakeUploader { sender: s })),
use_core_mps: false, use_core_mps: false,
trim_data_to_registered_pings: false, trim_data_to_registered_pings: false,
log_level: None,
}, },
ClientInfoMetrics::unknown(), ClientInfoMetrics::unknown(),
false, false,
@ -343,6 +347,7 @@ fn no_dirty_baseline_on_clean_shutdowns() {
uploader: Some(Box::new(FakeUploader { sender: s })), uploader: Some(Box::new(FakeUploader { sender: s })),
use_core_mps: false, use_core_mps: false,
trim_data_to_registered_pings: false, trim_data_to_registered_pings: false,
log_level: None,
}, },
ClientInfoMetrics::unknown(), ClientInfoMetrics::unknown(),
false, false,
@ -373,6 +378,7 @@ fn initialize_must_not_crash_if_data_dir_is_messed_up() {
uploader: None, uploader: None,
use_core_mps: false, use_core_mps: false,
trim_data_to_registered_pings: false, trim_data_to_registered_pings: false,
log_level: None,
}; };
test_reset_glean(cfg, ClientInfoMetrics::unknown(), false); test_reset_glean(cfg, ClientInfoMetrics::unknown(), false);
@ -419,6 +425,7 @@ fn queued_recorded_metrics_correctly_record_during_init() {
uploader: None, uploader: None,
use_core_mps: false, use_core_mps: false,
trim_data_to_registered_pings: false, trim_data_to_registered_pings: false,
log_level: None,
}; };
let _t = new_glean(Some(cfg), false); let _t = new_glean(Some(cfg), false);
@ -445,6 +452,7 @@ fn initializing_twice_is_a_noop() {
uploader: None, uploader: None,
use_core_mps: false, use_core_mps: false,
trim_data_to_registered_pings: false, trim_data_to_registered_pings: false,
log_level: None,
}, },
ClientInfoMetrics::unknown(), ClientInfoMetrics::unknown(),
true, true,
@ -465,6 +473,7 @@ fn initializing_twice_is_a_noop() {
uploader: None, uploader: None,
use_core_mps: false, use_core_mps: false,
trim_data_to_registered_pings: false, trim_data_to_registered_pings: false,
log_level: None,
}, },
ClientInfoMetrics::unknown(), ClientInfoMetrics::unknown(),
); );
@ -493,6 +502,7 @@ fn dont_handle_events_when_uninitialized() {
uploader: None, uploader: None,
use_core_mps: false, use_core_mps: false,
trim_data_to_registered_pings: false, trim_data_to_registered_pings: false,
log_level: None,
}, },
ClientInfoMetrics::unknown(), ClientInfoMetrics::unknown(),
true, true,
@ -557,6 +567,7 @@ fn the_app_channel_must_be_correctly_set_if_requested() {
uploader: None, uploader: None,
use_core_mps: false, use_core_mps: false,
trim_data_to_registered_pings: false, trim_data_to_registered_pings: false,
log_level: None,
}, },
client_info, client_info,
true, true,
@ -579,6 +590,7 @@ fn the_app_channel_must_be_correctly_set_if_requested() {
uploader: None, uploader: None,
use_core_mps: false, use_core_mps: false,
trim_data_to_registered_pings: false, trim_data_to_registered_pings: false,
log_level: None,
}, },
client_info, client_info,
true, true,
@ -642,6 +654,7 @@ fn ping_collection_must_happen_after_concurrently_scheduled_metrics_recordings()
uploader: Some(Box::new(FakeUploader { sender: s })), uploader: Some(Box::new(FakeUploader { sender: s })),
use_core_mps: false, use_core_mps: false,
trim_data_to_registered_pings: false, trim_data_to_registered_pings: false,
log_level: None,
}, },
ClientInfoMetrics::unknown(), ClientInfoMetrics::unknown(),
true, true,
@ -723,6 +736,7 @@ fn core_metrics_should_be_cleared_and_restored_when_disabling_and_enabling_uploa
uploader: None, uploader: None,
use_core_mps: false, use_core_mps: false,
trim_data_to_registered_pings: false, trim_data_to_registered_pings: false,
log_level: None,
}, },
ClientInfoMetrics::unknown(), ClientInfoMetrics::unknown(),
true, true,
@ -785,6 +799,7 @@ fn sending_deletion_ping_if_disabled_outside_of_run() {
uploader: None, uploader: None,
use_core_mps: false, use_core_mps: false,
trim_data_to_registered_pings: false, trim_data_to_registered_pings: false,
log_level: None,
}; };
let _t = new_glean(Some(cfg), true); let _t = new_glean(Some(cfg), true);
@ -802,6 +817,7 @@ fn sending_deletion_ping_if_disabled_outside_of_run() {
uploader: Some(Box::new(FakeUploader { sender: s })), uploader: Some(Box::new(FakeUploader { sender: s })),
use_core_mps: false, use_core_mps: false,
trim_data_to_registered_pings: false, trim_data_to_registered_pings: false,
log_level: None,
}, },
ClientInfoMetrics::unknown(), ClientInfoMetrics::unknown(),
false, false,
@ -850,6 +866,7 @@ fn no_sending_of_deletion_ping_if_unchanged_outside_of_run() {
uploader: None, uploader: None,
use_core_mps: false, use_core_mps: false,
trim_data_to_registered_pings: false, trim_data_to_registered_pings: false,
log_level: None,
}; };
let _t = new_glean(Some(cfg), true); let _t = new_glean(Some(cfg), true);
@ -867,6 +884,7 @@ fn no_sending_of_deletion_ping_if_unchanged_outside_of_run() {
uploader: Some(Box::new(FakeUploader { sender: s })), uploader: Some(Box::new(FakeUploader { sender: s })),
use_core_mps: false, use_core_mps: false,
trim_data_to_registered_pings: false, trim_data_to_registered_pings: false,
log_level: None,
}, },
ClientInfoMetrics::unknown(), ClientInfoMetrics::unknown(),
false, false,
@ -923,6 +941,7 @@ fn test_sending_of_startup_baseline_ping_with_application_lifetime_metric() {
uploader: None, uploader: None,
use_core_mps: false, use_core_mps: false,
trim_data_to_registered_pings: false, trim_data_to_registered_pings: false,
log_level: None,
}, },
ClientInfoMetrics::unknown(), ClientInfoMetrics::unknown(),
true, true,
@ -955,6 +974,7 @@ fn test_sending_of_startup_baseline_ping_with_application_lifetime_metric() {
uploader: Some(Box::new(FakeUploader { sender: s })), uploader: Some(Box::new(FakeUploader { sender: s })),
use_core_mps: false, use_core_mps: false,
trim_data_to_registered_pings: false, trim_data_to_registered_pings: false,
log_level: None,
}, },
ClientInfoMetrics::unknown(), ClientInfoMetrics::unknown(),
false, false,
@ -1013,6 +1033,7 @@ fn setting_debug_view_tag_before_initialization_should_not_crash() {
uploader: Some(Box::new(FakeUploader { sender: s })), uploader: Some(Box::new(FakeUploader { sender: s })),
use_core_mps: false, use_core_mps: false,
trim_data_to_registered_pings: false, trim_data_to_registered_pings: false,
log_level: None,
}; };
let _t = new_glean(Some(cfg), true); let _t = new_glean(Some(cfg), true);
@ -1071,6 +1092,7 @@ fn setting_source_tags_before_initialization_should_not_crash() {
uploader: Some(Box::new(FakeUploader { sender: s })), uploader: Some(Box::new(FakeUploader { sender: s })),
use_core_mps: false, use_core_mps: false,
trim_data_to_registered_pings: false, trim_data_to_registered_pings: false,
log_level: None,
}; };
let _t = new_glean(Some(cfg), true); let _t = new_glean(Some(cfg), true);
@ -1128,6 +1150,7 @@ fn setting_source_tags_after_initialization_should_not_crash() {
uploader: Some(Box::new(FakeUploader { sender: s })), uploader: Some(Box::new(FakeUploader { sender: s })),
use_core_mps: false, use_core_mps: false,
trim_data_to_registered_pings: false, trim_data_to_registered_pings: false,
log_level: None,
}; };
let _t = new_glean(Some(cfg), true); let _t = new_glean(Some(cfg), true);
@ -1199,6 +1222,7 @@ fn flipping_upload_enabled_respects_order_of_events() {
uploader: Some(Box::new(FakeUploader { sender: s })), uploader: Some(Box::new(FakeUploader { sender: s })),
use_core_mps: false, use_core_mps: false,
trim_data_to_registered_pings: false, trim_data_to_registered_pings: false,
log_level: None,
}; };
// We create a ping and a metric before we initialize Glean // We create a ping and a metric before we initialize Glean
@ -1267,6 +1291,7 @@ fn registering_pings_before_init_must_work() {
uploader: Some(Box::new(FakeUploader { sender: s })), uploader: Some(Box::new(FakeUploader { sender: s })),
use_core_mps: false, use_core_mps: false,
trim_data_to_registered_pings: false, trim_data_to_registered_pings: false,
log_level: None,
}; };
let _t = new_glean(Some(cfg), true); let _t = new_glean(Some(cfg), true);
@ -1317,6 +1342,7 @@ fn test_a_ping_before_submission() {
uploader: Some(Box::new(FakeUploader { sender: s })), uploader: Some(Box::new(FakeUploader { sender: s })),
use_core_mps: false, use_core_mps: false,
trim_data_to_registered_pings: false, trim_data_to_registered_pings: false,
log_level: None,
}; };
let _t = new_glean(Some(cfg), true); let _t = new_glean(Some(cfg), true);
@ -1445,6 +1471,7 @@ fn signaling_done() {
})), })),
use_core_mps: false, use_core_mps: false,
trim_data_to_registered_pings: false, trim_data_to_registered_pings: false,
log_level: None,
}; };
let _t = new_glean(Some(cfg), true); let _t = new_glean(Some(cfg), true);

Просмотреть файл

@ -6,7 +6,7 @@ edition = "2018"
license = "MPL-2.0" license = "MPL-2.0"
[dependencies] [dependencies]
glean = "52.6.0" glean = "52.7.0"
log = "0.4" log = "0.4"
nserror = { path = "../../../xpcom/rust/nserror" } nserror = { path = "../../../xpcom/rust/nserror" }
nsstring = { path = "../../../xpcom/rust/nsstring" } nsstring = { path = "../../../xpcom/rust/nsstring" }

Просмотреть файл

@ -9,7 +9,7 @@ license = "MPL-2.0"
[dependencies] [dependencies]
bincode = "1.0" bincode = "1.0"
chrono = "0.4.10" chrono = "0.4.10"
glean = "52.6.0" glean = "52.7.0"
inherent = "1.0.0" inherent = "1.0.0"
log = "0.4" log = "0.4"
nsstring = { path = "../../../../xpcom/rust/nsstring", optional = true } nsstring = { path = "../../../../xpcom/rust/nsstring", optional = true }

Просмотреть файл

@ -39,6 +39,7 @@ fn setup_glean(tempdir: Option<tempfile::TempDir>) -> tempfile::TempDir {
uploader: None, uploader: None,
use_core_mps: false, use_core_mps: false,
trim_data_to_registered_pings: false, trim_data_to_registered_pings: false,
log_level: None,
}; };
let client_info = glean::ClientInfoMetrics { let client_info = glean::ClientInfoMetrics {

Просмотреть файл

@ -164,6 +164,7 @@ fn build_configuration(
uploader: None, uploader: None,
use_core_mps: true, use_core_mps: true,
trim_data_to_registered_pings: true, trim_data_to_registered_pings: true,
log_level: None,
}; };
Ok((configuration, client_info)) Ok((configuration, client_info))