Bug 1874923 - Update Glean to 56.1.0 r=janerik,supply-chain-reviewers,mach-reviewers,ahochheiden

Differential Revision: https://phabricator.services.mozilla.com/D199093
This commit is contained in:
Perry McManis 2024-01-22 15:45:27 +00:00
parent 94b5f6b41c
commit c314357a6d
34 changed files with 356 additions and 565 deletions

8
Cargo.lock generated
View File

@ -2281,9 +2281,9 @@ dependencies = [
[[package]]
name = "glean"
version = "56.0.0"
version = "56.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4bd4421c9e77e098f774ce712128179069dd6a56904d3b95c9cf35b8418e3d6a"
checksum = "e12e51799c1e40ba51f24e0ff232d35ea321403920bea31dc11de1afaeb541ef"
dependencies = [
"chrono",
"crossbeam-channel",
@ -2301,9 +2301,9 @@ dependencies = [
[[package]]
name = "glean-core"
version = "56.0.0"
version = "56.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a39d53b7dd7b0b81325273cd601f7ae19fba48e0916413c72952a3cf2b82293e"
checksum = "3f7570206325e7a20c45b60bf63f1f5b69c2ce0ee79ca0dc774e7c39eaab19aa"
dependencies = [
"android_logger",
"bincode",

View File

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

8
gfx/wr/Cargo.lock generated
View File

@ -996,9 +996,9 @@ dependencies = [
[[package]]
name = "glean"
version = "56.0.0"
version = "56.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4bd4421c9e77e098f774ce712128179069dd6a56904d3b95c9cf35b8418e3d6a"
checksum = "e12e51799c1e40ba51f24e0ff232d35ea321403920bea31dc11de1afaeb541ef"
dependencies = [
"chrono",
"crossbeam-channel",
@ -1016,9 +1016,9 @@ dependencies = [
[[package]]
name = "glean-core"
version = "56.0.0"
version = "56.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a39d53b7dd7b0b81325273cd601f7ae19fba48e0916413c72952a3cf2b82293e"
checksum = "3f7570206325e7a20c45b60bf63f1f5b69c2ce0ee79ca0dc774e7c39eaab19aa"
dependencies = [
"android_logger",
"bincode",

View File

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

View File

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

View File

@ -93,7 +93,7 @@ vendored:third_party/python/wheel
vendored:third_party/python/zipp
# glean-sdk may not be installable if a wheel isn't available
# and it has to be built from source.
pypi-optional:glean-sdk==56.0.0:telemetry will not be collected
pypi-optional:glean-sdk==56.1.0:telemetry will not be collected
# Mach gracefully handles the case where `psutil` is unavailable.
# 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).

View File

@ -1,17 +1,6 @@
# cargo-vet imports lock
[[unpublished.qcms]]
version = "0.3.0"
audited_as = "0.2.0"
[[publisher.aho-corasick]]
version = "0.7.20"
when = "2022-11-22"
user-id = 189
user-login = "BurntSushi"
user-name = "Andrew Gallant"
[[publisher.aho-corasick]]
version = "1.1.0"
when = "2023-09-18"
@ -54,13 +43,6 @@ user-id = 1258
user-login = "padenot"
user-name = "Paul Adenot"
[[publisher.authenticator]]
version = "0.4.0-alpha.23"
when = "2023-10-05"
user-id = 175410
user-login = "jschanck"
user-name = "John Schanck"
[[publisher.authenticator]]
version = "0.4.0-alpha.24"
when = "2023-11-29"
@ -223,29 +205,15 @@ user-login = "jrmuizel"
user-name = "Jeff Muizelaar"
[[publisher.glean]]
version = "55.0.0"
when = "2023-10-23"
user-id = 48
user-login = "badboy"
user-name = "Jan-Erik Rediger"
[[publisher.glean]]
version = "56.0.0"
when = "2023-11-30"
version = "56.1.0"
when = "2024-01-17"
user-id = 48
user-login = "badboy"
user-name = "Jan-Erik Rediger"
[[publisher.glean-core]]
version = "55.0.0"
when = "2023-10-23"
user-id = 48
user-login = "badboy"
user-name = "Jan-Erik Rediger"
[[publisher.glean-core]]
version = "56.0.0"
when = "2023-11-30"
version = "56.1.0"
when = "2024-01-17"
user-id = 48
user-login = "badboy"
user-name = "Jan-Erik Rediger"
@ -313,13 +281,6 @@ user-id = 1
user-login = "alexcrichton"
user-name = "Alex Crichton"
[[publisher.libc]]
version = "0.2.146"
when = "2023-06-06"
user-id = 2915
user-login = "Amanieu"
user-name = "Amanieu d'Antras"
[[publisher.libc]]
version = "0.2.150"
when = "2023-11-05"
@ -411,32 +372,12 @@ user-id = 3618
user-login = "dtolnay"
user-name = "David Tolnay"
[[publisher.prio]]
version = "0.12.1"
when = "2023-04-13"
user-id = 101233
user-login = "le-automaton"
[[publisher.prio]]
version = "0.15.3"
when = "2023-10-03"
user-id = 213776
user-login = "divviup-github-automation"
[[publisher.proc-macro2]]
version = "1.0.66"
when = "2023-07-16"
user-id = 3618
user-login = "dtolnay"
user-name = "David Tolnay"
[[publisher.proc-macro2]]
version = "1.0.69"
when = "2023-10-09"
user-id = 3618
user-login = "dtolnay"
user-name = "David Tolnay"
[[publisher.proc-macro2]]
version = "1.0.74"
when = "2024-01-02"
@ -451,13 +392,6 @@ user-id = 5946
user-login = "jrmuizel"
user-name = "Jeff Muizelaar"
[[publisher.quote]]
version = "1.0.28"
when = "2023-05-25"
user-id = 3618
user-login = "dtolnay"
user-name = "David Tolnay"
[[publisher.quote]]
version = "1.0.35"
when = "2024-01-02"
@ -465,13 +399,6 @@ user-id = 3618
user-login = "dtolnay"
user-name = "David Tolnay"
[[publisher.regex]]
version = "1.7.1"
when = "2023-01-09"
user-id = 189
user-login = "BurntSushi"
user-name = "Andrew Gallant"
[[publisher.regex]]
version = "1.9.4"
when = "2023-08-26"
@ -486,13 +413,6 @@ user-id = 189
user-login = "BurntSushi"
user-name = "Andrew Gallant"
[[publisher.regex-syntax]]
version = "0.6.28"
when = "2022-11-05"
user-id = 189
user-login = "BurntSushi"
user-name = "Andrew Gallant"
[[publisher.regex-syntax]]
version = "0.7.5"
when = "2023-08-26"
@ -535,34 +455,6 @@ user-id = 2915
user-login = "Amanieu"
user-name = "Amanieu d'Antras"
[[publisher.serde]]
version = "1.0.163"
when = "2023-05-11"
user-id = 3618
user-login = "dtolnay"
user-name = "David Tolnay"
[[publisher.serde]]
version = "1.0.192"
when = "2023-11-07"
user-id = 3618
user-login = "dtolnay"
user-name = "David Tolnay"
[[publisher.serde]]
version = "1.0.193"
when = "2023-11-21"
user-id = 3618
user-login = "dtolnay"
user-name = "David Tolnay"
[[publisher.serde]]
version = "1.0.194"
when = "2024-01-02"
user-id = 3618
user-login = "dtolnay"
user-name = "David Tolnay"
[[publisher.serde]]
version = "1.0.195"
when = "2024-01-06"
@ -577,34 +469,6 @@ user-id = 3618
user-login = "dtolnay"
user-name = "David Tolnay"
[[publisher.serde_derive]]
version = "1.0.163"
when = "2023-05-10"
user-id = 3618
user-login = "dtolnay"
user-name = "David Tolnay"
[[publisher.serde_derive]]
version = "1.0.192"
when = "2023-11-07"
user-id = 3618
user-login = "dtolnay"
user-name = "David Tolnay"
[[publisher.serde_derive]]
version = "1.0.193"
when = "2023-11-21"
user-id = 3618
user-login = "dtolnay"
user-name = "David Tolnay"
[[publisher.serde_derive]]
version = "1.0.194"
when = "2024-01-02"
user-id = 3618
user-login = "dtolnay"
user-name = "David Tolnay"
[[publisher.serde_derive]]
version = "1.0.195"
when = "2024-01-06"
@ -640,20 +504,6 @@ user-id = 2017
user-login = "mbrubeck"
user-name = "Matt Brubeck"
[[publisher.syn]]
version = "2.0.18"
when = "2023-05-26"
user-id = 3618
user-login = "dtolnay"
user-name = "David Tolnay"
[[publisher.syn]]
version = "2.0.39"
when = "2023-11-06"
user-id = 3618
user-login = "dtolnay"
user-name = "David Tolnay"
[[publisher.syn]]
version = "2.0.46"
when = "2024-01-02"
@ -661,13 +511,6 @@ user-id = 3618
user-login = "dtolnay"
user-name = "David Tolnay"
[[publisher.termcolor]]
version = "1.2.0"
when = "2023-01-15"
user-id = 189
user-login = "BurntSushi"
user-name = "Andrew Gallant"
[[publisher.termcolor]]
version = "1.4.0"
when = "2023-11-14"
@ -731,173 +574,54 @@ user-id = 1139
user-login = "Manishearth"
user-name = "Manish Goregaokar"
[[publisher.uniffi]]
version = "0.24.3"
when = "2023-08-01"
user-id = 48
user-login = "badboy"
user-name = "Jan-Erik Rediger"
[[publisher.uniffi]]
version = "0.25.2"
when = "2023-11-20"
user-id = 111105
user-login = "mhammond"
user-name = "Mark Hammond"
[[publisher.uniffi]]
version = "0.25.3"
when = "2023-12-07"
user-id = 127697
user-login = "bendk"
[[publisher.uniffi_bindgen]]
version = "0.24.3"
when = "2023-08-01"
user-id = 48
user-login = "badboy"
user-name = "Jan-Erik Rediger"
[[publisher.uniffi_bindgen]]
version = "0.25.2"
when = "2023-11-20"
user-id = 111105
user-login = "mhammond"
user-name = "Mark Hammond"
[[publisher.uniffi_bindgen]]
version = "0.25.3"
when = "2023-12-07"
user-id = 127697
user-login = "bendk"
[[publisher.uniffi_build]]
version = "0.24.3"
when = "2023-08-01"
user-id = 48
user-login = "badboy"
user-name = "Jan-Erik Rediger"
[[publisher.uniffi_build]]
version = "0.25.2"
when = "2023-11-20"
user-id = 111105
user-login = "mhammond"
user-name = "Mark Hammond"
[[publisher.uniffi_build]]
version = "0.25.3"
when = "2023-12-07"
user-id = 127697
user-login = "bendk"
[[publisher.uniffi_checksum_derive]]
version = "0.24.3"
when = "2023-08-01"
user-id = 48
user-login = "badboy"
user-name = "Jan-Erik Rediger"
[[publisher.uniffi_checksum_derive]]
version = "0.25.2"
when = "2023-11-20"
user-id = 111105
user-login = "mhammond"
user-name = "Mark Hammond"
[[publisher.uniffi_checksum_derive]]
version = "0.25.3"
when = "2023-12-07"
user-id = 127697
user-login = "bendk"
[[publisher.uniffi_core]]
version = "0.24.3"
when = "2023-08-01"
user-id = 48
user-login = "badboy"
user-name = "Jan-Erik Rediger"
[[publisher.uniffi_core]]
version = "0.25.2"
when = "2023-11-20"
user-id = 111105
user-login = "mhammond"
user-name = "Mark Hammond"
[[publisher.uniffi_core]]
version = "0.25.3"
when = "2023-12-07"
user-id = 127697
user-login = "bendk"
[[publisher.uniffi_macros]]
version = "0.24.3"
when = "2023-08-01"
user-id = 48
user-login = "badboy"
user-name = "Jan-Erik Rediger"
[[publisher.uniffi_macros]]
version = "0.25.2"
when = "2023-11-20"
user-id = 111105
user-login = "mhammond"
user-name = "Mark Hammond"
[[publisher.uniffi_macros]]
version = "0.25.3"
when = "2023-12-07"
user-id = 127697
user-login = "bendk"
[[publisher.uniffi_meta]]
version = "0.24.3"
when = "2023-08-01"
user-id = 48
user-login = "badboy"
user-name = "Jan-Erik Rediger"
[[publisher.uniffi_meta]]
version = "0.25.2"
when = "2023-11-20"
user-id = 111105
user-login = "mhammond"
user-name = "Mark Hammond"
[[publisher.uniffi_meta]]
version = "0.25.3"
when = "2023-12-07"
user-id = 127697
user-login = "bendk"
[[publisher.uniffi_testing]]
version = "0.24.3"
when = "2023-08-01"
user-id = 48
user-login = "badboy"
user-name = "Jan-Erik Rediger"
[[publisher.uniffi_testing]]
version = "0.25.2"
when = "2023-11-20"
user-id = 111105
user-login = "mhammond"
user-name = "Mark Hammond"
[[publisher.uniffi_testing]]
version = "0.25.3"
when = "2023-12-07"
user-id = 127697
user-login = "bendk"
[[publisher.uniffi_udl]]
version = "0.25.2"
when = "2023-11-20"
user-id = 111105
user-login = "mhammond"
user-name = "Mark Hammond"
[[publisher.uniffi_udl]]
version = "0.25.3"
when = "2023-12-07"
@ -918,13 +642,6 @@ user-id = 189
user-login = "BurntSushi"
user-name = "Andrew Gallant"
[[publisher.warp]]
version = "0.3.3"
when = "2022-09-27"
user-id = 359
user-login = "seanmonstar"
user-name = "Sean McArthur"
[[publisher.warp]]
version = "0.3.6"
when = "2023-09-27"
@ -939,13 +656,6 @@ user-id = 1
user-login = "alexcrichton"
user-name = "Alex Crichton"
[[publisher.wasm-encoder]]
version = "0.33.1"
when = "2023-09-18"
user-id = 1
user-login = "alexcrichton"
user-name = "Alex Crichton"
[[publisher.wasm-encoder]]
version = "0.38.0"
when = "2023-11-20"
@ -953,13 +663,6 @@ user-id = 1
user-login = "alexcrichton"
user-name = "Alex Crichton"
[[publisher.wasm-smith]]
version = "0.12.17"
when = "2023-09-18"
user-id = 1
user-login = "alexcrichton"
user-name = "Alex Crichton"
[[publisher.wasm-smith]]
version = "0.13.0"
when = "2023-11-20"
@ -967,13 +670,6 @@ user-id = 1
user-login = "alexcrichton"
user-name = "Alex Crichton"
[[publisher.wast]]
version = "65.0.1"
when = "2023-09-18"
user-id = 1
user-login = "alexcrichton"
user-name = "Alex Crichton"
[[publisher.wast]]
version = "69.0.0"
when = "2023-11-20"
@ -1044,19 +740,6 @@ I am employed by a member of the Bytecode Alliance and plan to continue doing
so and will actively maintain this crate over time.
"""
[[audits.bytecode-alliance.wildcard-audits.wasmparser]]
who = "Alex Crichton <alex@alexcrichton.com>"
criteria = "safe-to-deploy"
user-id = 1 # Alex Crichton (alexcrichton)
start = "2020-07-13"
end = "2024-04-14"
notes = """
This is a Bytecode Alliance authored crate maintained in the `wasm-tools`
repository of which I'm one of the primary maintainers and publishers for.
I am employed by a member of the Bytecode Alliance and plan to continue doing
so and will actively maintain this crate over time.
"""
[[audits.bytecode-alliance.wildcard-audits.wast]]
who = "Alex Crichton <alex@alexcrichton.com>"
criteria = "safe-to-deploy"
@ -1264,12 +947,6 @@ criteria = "safe-to-deploy"
version = "0.2.5"
notes = "I am the author of this crate."
[[audits.bytecode-alliance.audits.libc]]
who = "Alex Crichton <alex@alexcrichton.com>"
criteria = "safe-to-deploy"
delta = "0.2.146 -> 0.2.147"
notes = "Only new type definitions and updating others for some platforms, no major changes"
[[audits.bytecode-alliance.audits.memoffset]]
who = "Alex Crichton <alex@alexcrichton.com>"
criteria = "safe-to-deploy"
@ -1429,18 +1106,6 @@ criteria = "safe-to-deploy"
version = "0.1.1"
notes = "No unsafe usage or ambient capabilities"
[[audits.embark-studios.audits.thiserror]]
who = "Johan Andersson <opensource@embark-studios.com>"
criteria = "safe-to-deploy"
version = "1.0.40"
notes = "Wrapper over implementation crate, found no unsafe or ambient capabilities used"
[[audits.embark-studios.audits.thiserror-impl]]
who = "Johan Andersson <opensource@embark-studios.com>"
criteria = "safe-to-deploy"
version = "1.0.40"
notes = "Found no unsafe or ambient capabilities used"
[[audits.embark-studios.audits.yaml-rust]]
who = "Johan Andersson <opensource@embark-studios.com>"
criteria = "safe-to-deploy"
@ -1480,12 +1145,6 @@ criteria = "safe-to-deploy"
version = "0.3.1"
aggregated-from = "https://chromium.googlesource.com/chromiumos/third_party/rust_crates/+/refs/heads/main/cargo-vet/audits.toml?format=TEXT"
[[audits.google.audits.h2]]
who = "ChromeOS"
criteria = "safe-to-run"
version = "0.3.14"
aggregated-from = "https://chromium.googlesource.com/chromiumos/third_party/rust_crates/+/refs/heads/main/cargo-vet/audits.toml?format=TEXT"
[[audits.google.audits.http]]
who = "ChromeOS"
criteria = "safe-to-run"
@ -1596,13 +1255,6 @@ criteria = "safe-to-run"
version = "0.3.0"
aggregated-from = "https://chromium.googlesource.com/chromiumos/third_party/rust_crates/+/refs/heads/main/cargo-vet/audits.toml?format=TEXT"
[[audits.isrg.wildcard-audits.prio]]
who = "David Cook <dcook@divviup.org>"
criteria = "safe-to-deploy"
user-id = 101233 # le-automaton
start = "2020-09-28"
end = "2024-03-23"
[[audits.isrg.wildcard-audits.prio]]
who = "David Cook <dcook@divviup.org>"
criteria = "safe-to-deploy"
@ -1696,78 +1348,6 @@ who = "Brandon Pitman <bran@bran.land>"
criteria = "safe-to-deploy"
delta = "0.10.7 -> 0.10.8"
[[audits.mozilla.wildcard-audits.uniffi]]
who = "Jan-Erik Rediger <jrediger@mozilla.com>"
criteria = "safe-to-deploy"
user-id = 111105 # Mark Hammond (mhammond)
start = "2021-11-22"
end = "2024-11-28"
aggregated-from = "https://raw.githubusercontent.com/mozilla/glean/main/supply-chain/audits.toml"
[[audits.mozilla.wildcard-audits.uniffi_bindgen]]
who = "Jan-Erik Rediger <jrediger@mozilla.com>"
criteria = "safe-to-deploy"
user-id = 111105 # Mark Hammond (mhammond)
start = "2021-11-22"
end = "2024-11-28"
aggregated-from = "https://raw.githubusercontent.com/mozilla/glean/main/supply-chain/audits.toml"
[[audits.mozilla.wildcard-audits.uniffi_build]]
who = "Jan-Erik Rediger <jrediger@mozilla.com>"
criteria = "safe-to-deploy"
user-id = 111105 # Mark Hammond (mhammond)
start = "2021-11-22"
end = "2024-11-28"
aggregated-from = "https://raw.githubusercontent.com/mozilla/glean/main/supply-chain/audits.toml"
[[audits.mozilla.wildcard-audits.uniffi_checksum_derive]]
who = "Jan-Erik Rediger <jrediger@mozilla.com>"
criteria = "safe-to-deploy"
user-id = 111105 # Mark Hammond (mhammond)
start = "2023-11-20"
end = "2024-11-28"
aggregated-from = "https://raw.githubusercontent.com/mozilla/glean/main/supply-chain/audits.toml"
[[audits.mozilla.wildcard-audits.uniffi_core]]
who = "Jan-Erik Rediger <jrediger@mozilla.com>"
criteria = "safe-to-deploy"
user-id = 111105 # Mark Hammond (mhammond)
start = "2023-11-20"
end = "2024-11-28"
aggregated-from = "https://raw.githubusercontent.com/mozilla/glean/main/supply-chain/audits.toml"
[[audits.mozilla.wildcard-audits.uniffi_macros]]
who = "Jan-Erik Rediger <jrediger@mozilla.com>"
criteria = "safe-to-deploy"
user-id = 111105 # Mark Hammond (mhammond)
start = "2021-11-22"
end = "2024-11-28"
aggregated-from = "https://raw.githubusercontent.com/mozilla/glean/main/supply-chain/audits.toml"
[[audits.mozilla.wildcard-audits.uniffi_meta]]
who = "Jan-Erik Rediger <jrediger@mozilla.com>"
criteria = "safe-to-deploy"
user-id = 111105 # Mark Hammond (mhammond)
start = "2023-11-20"
end = "2024-11-28"
aggregated-from = "https://raw.githubusercontent.com/mozilla/glean/main/supply-chain/audits.toml"
[[audits.mozilla.wildcard-audits.uniffi_testing]]
who = "Jan-Erik Rediger <jrediger@mozilla.com>"
criteria = "safe-to-deploy"
user-id = 111105 # Mark Hammond (mhammond)
start = "2023-11-20"
end = "2024-11-28"
aggregated-from = "https://raw.githubusercontent.com/mozilla/glean/main/supply-chain/audits.toml"
[[audits.mozilla.wildcard-audits.uniffi_udl]]
who = "Jan-Erik Rediger <jrediger@mozilla.com>"
criteria = "safe-to-deploy"
user-id = 111105 # Mark Hammond (mhammond)
start = "2023-11-20"
end = "2024-11-28"
aggregated-from = "https://raw.githubusercontent.com/mozilla/glean/main/supply-chain/audits.toml"
[[audits.mozilla.wildcard-audits.zeitstempel]]
who = "Jan-Erik Rediger <jrediger@mozilla.com>"
criteria = "safe-to-deploy"

View File

@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: glean-parser
Version: 10.0.3
Version: 11.0.1
Summary: Parser tools for Mozilla's Glean telemetry
Home-page: https://github.com/mozilla/glean_parser
Author: The Glean Team
@ -10,11 +10,11 @@ Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Natural Language :: English
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Description-Content-Type: text/markdown
License-File: LICENSE
License-File: AUTHORS.md
@ -43,7 +43,7 @@ code for various integrations, linting and coverage testing.
## Requirements
- Python 3.7 (or later)
- Python 3.8 (or later)
The following library requirements are installed automatically when
`glean_parser` is installed by `pip`.
@ -79,6 +79,18 @@ $ glean_parser check < ping.json
## Unreleased
## 11.0.1
- Fix javascript_server template to include non-event metric parameters in #record call for event metrics ([#643](https://github.com/mozilla/glean_parser/pull/643))
- events: Increase extra key limit to 50 ([Bug 1869429](https://bugzilla.mozilla.org/show_bug.cgi?id=1869429))
## 11.0.0
- Add updated logging logic for Ruby Server ([#642](https://github.com/mozilla/glean_parser/pull/642))
- Add support for event metric type in server-side JavaScript outputter ([DENG-1736](https://mozilla-hub.atlassian.net/browse/DENG-1736))
- BREAKING CHANGE: Dropped support for Python 3.7 ([#638](https://github.com/mozilla/glean_parser/pull/638))
- Add official support for Python 3.11+ ([#638](https://github.com/mozilla/glean_parser/pull/638))
## 10.0.3
- Warn about empty or TODO-tagged data reviews in the list ([#634](https://github.com/mozilla/glean_parser/pull/634))

View File

@ -1,9 +1,9 @@
glean_parser/__init__.py,sha256=bJljD052_0y-efcBhYpllICVCXOMHLcXRLNyrvfgt5A,533
glean_parser/__main__.py,sha256=7kIBMO-kL7boJxYrKp3CkRr4xX4_ct4BqCiCvtg2jjU,8631
glean_parser/__main__.py,sha256=Rw0PpuQtAvdHJMK1YLozeZkc6x1yjeNZwidu4faovdk,8633
glean_parser/coverage.py,sha256=2IwC4XMDtDamMkBFoYilmqJzW4gyypq65YVCur8SNas,4405
glean_parser/data_review.py,sha256=BweeeTkNNS6HrIDkztawhbDByrk_-Avxpg7YeST3VAs,2152
glean_parser/javascript.py,sha256=w4ZhNBHBKWYk0h3t7G0Ud2tR__hRqzn9dlEXNKLdQrA,11230
glean_parser/javascript_server.py,sha256=a-mpoSZ_ZnDWtRGKIVxH6NxSUST42yP9vJU85kQcRKE,6004
glean_parser/javascript_server.py,sha256=SDV9tPL1uZMyS1VSyo5lOFuNPFHZu-PZxr1vhND-GzM,7971
glean_parser/kotlin.py,sha256=5z8_74xlqvHDsedwZhGf1_qb7swPEgIZumkJIuj3ef8,12598
glean_parser/lint.py,sha256=STqdgyOhR4Q3fHivSizgn9bOOyqrNHhzjaqyJxz6qzI,19948
glean_parser/markdown.py,sha256=GkCr1CrV6mnRQseT6FO1-JJ7Eup8X3lxUfRMBTxXpe4,9066
@ -19,26 +19,26 @@ glean_parser/translation_options.py,sha256=Lxzr6G7MP0tC_ZYlZXftS4j0SLiqO-5mGVTEc
glean_parser/util.py,sha256=X5YFAU4kWdDJjMsJzXH-QJVSjUJc_qvXktiM-dJSfzo,16004
glean_parser/validate_ping.py,sha256=0TNvILH6dtzJDys3W8Kqorw6kk03me73OCUDtpoHcXU,2118
glean_parser/schemas/metrics.1-0-0.schema.yaml,sha256=cND3cvi6iBfPUVmtfIBQfGJV9AALpbvN7nu8E33_J-o,19566
glean_parser/schemas/metrics.2-0-0.schema.yaml,sha256=wAlXT7hKZDzF1P8yyIftkmIhrcRhJ1XEjZV0FUTIks8,25849
glean_parser/schemas/metrics.2-0-0.schema.yaml,sha256=sfrARxefWy1WN5HxUKjwjN8lGobbPds5l7Y46VHfP1g,25849
glean_parser/schemas/pings.1-0-0.schema.yaml,sha256=hwCnsKpEysmrmVp-QHGBArEkVY3vaU1rVsxlTwhAzws,4315
glean_parser/schemas/pings.2-0-0.schema.yaml,sha256=l-nIuyXJ9-D0X_U6hzGVbhIBhtZDg-rGau-RDrhgpng,4705
glean_parser/schemas/tags.1-0-0.schema.yaml,sha256=OGXIJlvvVW1vaqB_NVZnwKeZ-sLlfH57vjBSHbj6DNI,1231
glean_parser/templates/data_review.jinja2,sha256=jeYU29T1zLSyu9fKBBFu5BFPfIw8_hmOUXw8RXhRXK8,3287
glean_parser/templates/javascript.buildinfo.jinja2,sha256=4mXiZCQIk9if4lxlA05kpSIL4a95IdwGwqle2OqqNAs,474
glean_parser/templates/javascript.jinja2,sha256=cT_bG-jC6m4afECXmcsqHwiiHjRuVtJnfv90OD2Mwxw,2669
glean_parser/templates/javascript_server.jinja2,sha256=XbYhHWZQ2zkAZyzwLTvfbyV4xLrG97hMh5yRoybF-6c,5773
glean_parser/templates/javascript_server.jinja2,sha256=H991yQOKJMwSgM0bLEA-Q5Z15LWsfEPh6bTYz_owSCU,9423
glean_parser/templates/kotlin.buildinfo.jinja2,sha256=X0lk2SNu5OIIj2i6mUyF9CWFQIonLgfqkgT5fA-5G6c,920
glean_parser/templates/kotlin.geckoview.jinja2,sha256=MJOgtoDXmBjE9pwk-G6T89y36RZuMbDWM_-DBN_gFJo,5099
glean_parser/templates/kotlin.jinja2,sha256=3DqUMXJRkmTvSp_5IRyvGmw5iXYWdox7coMFe3YDxcc,5247
glean_parser/templates/markdown.jinja2,sha256=vAHHGGm28HRDPd3zO_wQMAUZIuxE9uQ7hl3NpXxcKV4,3425
glean_parser/templates/qmldir.jinja2,sha256=m6IGsp-tgTiOfQ7VN8XW6GqX0gJqJkt3B6Pkaul6FVo,156
glean_parser/templates/ruby_server.jinja2,sha256=_gcGMe9Gb3eVj7QeXEBRkYBYn3NWK3_K9e0k6jcElNM,6609
glean_parser/templates/ruby_server.jinja2,sha256=vm4BEenOqzomQNTLFfMOzlWHARnsWUjTBbnR-v2cadI,6247
glean_parser/templates/rust.jinja2,sha256=pdbjq_JGm8XWHsVXk0m2xZ5Pd-Y9T_zxJfZKBoT0ERU,3635
glean_parser/templates/swift.jinja2,sha256=NfZdvrG8LGT4H2AWk-vB_GDTMcpW1XZJcApO4OF5AYE,4874
glean_parser-10.0.3.dist-info/AUTHORS.md,sha256=yxgj8MioO4wUnrh0gmfb8l3DJJrf-l4HmmEDbQsbbNI,455
glean_parser-10.0.3.dist-info/LICENSE,sha256=HyVuytGSiAUQ6ErWBHTqt1iSGHhLmlC8fO7jTCuR8dU,16725
glean_parser-10.0.3.dist-info/METADATA,sha256=pwF-0xZEus2muTqypVlVlOTV1uz--Bx6chSQaQPrP68,30127
glean_parser-10.0.3.dist-info/WHEEL,sha256=Xo9-1PvkuimrydujYJAjF7pCkriuXBpUPEjma1nZyJ0,92
glean_parser-10.0.3.dist-info/entry_points.txt,sha256=mf9d3sv8BwSjjR58x9KDnpVkONCnv3fPQC2NjJl15Xg,68
glean_parser-10.0.3.dist-info/top_level.txt,sha256=q7T3duD-9tYZFyDry6Wv2LcdMsK2jGnzdDFhxWcT2Z8,13
glean_parser-10.0.3.dist-info/RECORD,,
glean_parser-11.0.1.dist-info/AUTHORS.md,sha256=yxgj8MioO4wUnrh0gmfb8l3DJJrf-l4HmmEDbQsbbNI,455
glean_parser-11.0.1.dist-info/LICENSE,sha256=HyVuytGSiAUQ6ErWBHTqt1iSGHhLmlC8fO7jTCuR8dU,16725
glean_parser-11.0.1.dist-info/METADATA,sha256=z5yLEYgY4EV1e_cHNQhenhkwK5ryURgljfTfaYK-NYs,30877
glean_parser-11.0.1.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
glean_parser-11.0.1.dist-info/entry_points.txt,sha256=mf9d3sv8BwSjjR58x9KDnpVkONCnv3fPQC2NjJl15Xg,68
glean_parser-11.0.1.dist-info/top_level.txt,sha256=q7T3duD-9tYZFyDry6Wv2LcdMsK2jGnzdDFhxWcT2Z8,13
glean_parser-11.0.1.dist-info/RECORD,,

View File

@ -1,5 +1,5 @@
Wheel-Version: 1.0
Generator: bdist_wheel (0.41.3)
Generator: bdist_wheel (0.42.0)
Root-Is-Purelib: true
Tag: py3-none-any

View File

@ -303,12 +303,14 @@ def coverage(coverage_file, metrics_files, format, output, allow_reserved):
)
def data_review_request(bug, metrics_files):
"""
Generate a skeleton Data Review Request for all metrics in metrics_files
whose bug_numbers fields contain the provided bug string.
Generate a skeleton Data Review Request for all metrics in METRICS_FILES
whose bug_numbers fields contain the provided BUG string.
For example, providing "1694739" matches
"https://bugzilla.mozilla.org/show_bug.cgi?id=1694739".
To ensure substrings don't match, the provided bug string will match only
if it is bounded by non-word characters.
Prints to stdout.
"""
sys.exit(mod_data_review.generate(bug, [Path(x) for x in metrics_files]))

View File

@ -9,14 +9,24 @@ Outputter to generate server Javascript code for collecting events.
This outputter is different from the rest of the outputters in that the code it
generates does not use the Glean SDK. It is meant to be used to collect events
using "events as pings" pattern in server-side environments. In these environments
SDK assumptions to measurement window and connectivity don't hold.
in server-side environments. In these environments SDK assumptions to measurement
window and connectivity don't hold.
Generated code takes care of assembling pings with metrics, serializing to messages
conforming to Glean schema, and logging with mozlog. Then it's the role of the ingestion
pipeline to pick the messages up and process.
Warning: this outputter supports limited set of metrics,
see `SUPPORTED_METRIC_TYPES` below.
There are two patterns for event structure supported in this environment:
* Events as `Event` metric type, where we generate a single class per ping with
`record{event_name}` method for each event metric. This is recommended to use for new
applications as it allows to fully leverage standard Data Platform tools
post-ingestion.
* Custom pings-as-events, where for each ping we generate a class with a single `record`
method, usually with an `event_name` string metric.
Therefore, unlike in other outputters, here we don't generate classes for each metric.
"""
from collections import defaultdict
from pathlib import Path
@ -28,11 +38,14 @@ from . import util
# Adding a metric here will require updating the `generate_js_metric_type` function
# and might require changes to the template.
SUPPORTED_METRIC_TYPES = ["string"]
SUPPORTED_METRIC_TYPES = ["string", "event"]
def event_class_name(pingName: str) -> str:
return util.Camelize(pingName) + "ServerEvent"
def event_class_name(ping_name: str, event_metric_exists: bool) -> str:
# For compatibility with FxA codebase we don't want to add "Logger" suffix
# when custom pings without event metrics are used.
suffix = "Logger" if event_metric_exists else ""
return util.Camelize(ping_name) + "ServerEvent" + suffix
def generate_metric_name(metric: metrics.Metric) -> str:
@ -47,12 +60,20 @@ def generate_js_metric_type(metric: metrics.Metric) -> str:
return metric.type
def generate_metric_argument_description(metric: metrics.Metric) -> str:
return metric.description.replace("\n", " ").rstrip()
def generate_ping_factory_method(ping: str, event_metric_exists: bool) -> str:
# `ServerEventLogger` better describes role of the class that this factory
# method generates, but for compatibility with existing FxA codebase
# we use `Event` suffix if no event metrics are defined.
suffix = "ServerEventLogger" if event_metric_exists else "Event"
return f"create{util.Camelize(ping)}{suffix}"
def generate_ping_factory_method(ping: str) -> str:
return f"create{util.Camelize(ping)}Event"
def generate_event_metric_record_function_name(metric: metrics.Metric) -> str:
return f"record{util.Camelize(metric.category)}{util.Camelize(metric.name)}"
def clean_string(s: str) -> str:
return s.replace("\n", " ").rstrip()
def output(
@ -79,24 +100,16 @@ def output(
("metric_name", generate_metric_name),
("metric_argument_name", generate_metric_argument_name),
("js_metric_type", generate_js_metric_type),
("metric_argument_description", generate_metric_argument_description),
("factory_method", generate_ping_factory_method),
(
"event_metric_record_function_name",
generate_event_metric_record_function_name,
),
("clean_string", clean_string),
),
)
# In this environment we don't use a concept of measurement window for collecting
# metrics. Only "events as pings" are supported.
# For each ping we generate code which contains all the logic for assembling it
# with metrics, serializing, and submitting. Therefore we don't generate classes for
# each metric as in standard outputters.
PING_METRIC_ERROR_MSG = (
" Server-side environment is simplified and this"
+ " parser doesn't generate individual metric files. Make sure to pass all"
+ " your ping and metric definitions in a single invocation of the parser."
)
if "pings" not in objs:
print("❌ No ping definition found." + PING_METRIC_ERROR_MSG)
return
event_metric_exists = False
# Go through all metrics in objs and build a map of
# ping->list of metric categories->list of metrics
@ -113,11 +126,39 @@ def output(
+ " metric type."
)
continue
if metric.type == "event":
# This is used in the template - generated code is slightly
# different when event metric type is used.
event_metric_exists = True
for ping in metric.send_in_pings:
metrics_by_type = ping_to_metrics[ping]
metrics_list = metrics_by_type.setdefault(metric.type, [])
metrics_list.append(metric)
PING_METRIC_ERROR_MSG = (
" Server-side environment is simplified and this"
+ " parser doesn't generate individual metric files. Make sure to pass all"
+ " your ping and metric definitions in a single invocation of the parser."
)
if "pings" not in objs:
# If events are meant to be sent in custom pings, we need to make sure they
# are defined. Otherwise we won't have destination tables defined and
# submissions won't pass validation at ingestion.
if event_metric_exists:
if "events" not in ping_to_metrics:
# Event metrics can be sent in standard `events` ping
# or in custom pings.
print(
""
+ PING_METRIC_ERROR_MSG
+ "\n You need to either send your event metrics in standard"
+ " `events` ping or define a custom one."
)
return
else:
print("❌ No ping definition found." + PING_METRIC_ERROR_MSG)
return
if not ping_to_metrics:
print("❌ No pings with metrics found." + PING_METRIC_ERROR_MSG)
return
@ -129,6 +170,7 @@ def output(
template.render(
parser_version=__version__,
pings=ping_to_metrics,
event_metric_exists=event_metric_exists,
lang=lang,
)
)

View File

@ -368,7 +368,7 @@ definitions:
description: |
The acceptable keys on the "extra" object sent with events. This is an
object mapping the key to an object containing metadata about the key.
A maximum of 15 extra keys is allowed.
A maximum of 50 extra keys is allowed.
This metadata object has the following keys:
- `description`: **Required.** A description of the key.
@ -390,7 +390,7 @@ definitions:
- quantity
required:
- description
maxProperties: 15
maxProperties: 50
default: {}
gecko_datapoint:

View File

@ -17,19 +17,27 @@ import mozlog{% if lang == "typescript" %}, { Logger }{% endif %} from 'mozlog';
const GLEAN_EVENT_MOZLOG_TYPE = 'glean-server-event';
{% if lang == "typescript" %}
type LoggerOptions = { app: string; fmt?: 'heka' };
{% if event_metric_exists %}
type Event = {
category: string;
name: string;
extra: Record<string, any>;
timestamp?: number;
};
{% endif %}
{% endif %}
let _logger{% if lang == "typescript" %}: Logger{% endif %};
{% for ping, metrics_by_type in pings.items() %}
class {{ ping|event_class_name }} {
class {{ ping|event_class_name(event_metric_exists) }} {
{% if lang == "typescript" %}
_applicationId: string;
_appDisplayVersion: string;
_channel: string;
{% endif %}
/**
* Create {{ ping|event_class_name }} instance.
* Create {{ ping|event_class_name(event_metric_exists) }} instance.
*
* @param {string} applicationId - The application ID.
* @param {string} appDisplayVersion - The application display version.
@ -64,6 +72,9 @@ class {{ ping|event_class_name }} {
{% endif %}
}
}
{% if event_metric_exists %}
#record({
{% else %}
/**
* Record and submit a server event object.
* Event is logged using internal mozlog logger.
@ -73,40 +84,60 @@ class {{ ping|event_class_name }} {
* information and scrubbed at ingestion.
{% for metric_type, metrics in metrics_by_type.items() %}
{% for metric in metrics %}
* @param { {{-metric|js_metric_type-}} } {{ metric|metric_argument_name }} - {{ metric|metric_argument_description }}.
* @param { {{-metric|js_metric_type-}} } {{ metric|metric_argument_name }} - {{ metric.description|clean_string }}.
{% endfor %}
{% endfor %}
*/
record({
{% endif %}
user_agent,
ip_address,
{% for metric_type, metrics in metrics_by_type.items() %}
{% if metric_type != 'event' %}
{% for metric in metrics %}
{{ metric|metric_argument_name }},
{% endfor %}
{% endif %}
{% endfor %}
{% if event_metric_exists %}
event,
{% endif %}
{% if lang == "typescript" %}
}: {
user_agent: string,
ip_address: string,
{% for metric_type, metrics in metrics_by_type.items() %}
{% if metric_type != 'event' %}
{% for metric in metrics %}
{{ metric|metric_argument_name }}: {{ metric|js_metric_type }};
{% endfor %}
{{ metric|metric_argument_name }}: {{ metric|js_metric_type }},
{% endfor %}
{% endif %}
{% endfor %}
{% if event_metric_exists %}
event: Event
{% endif %}
{% endif %}
}) {
const timestamp = new Date().toISOString();
const now = new Date();
const timestamp = now.toISOString();
{% if event_metric_exists %}
event.timestamp = now.getTime();
{% endif %}
const eventPayload = {
metrics: {
{% for metric_type, metrics in metrics_by_type.items() %}
{% if metric_type != 'event' %}
{{ metric_type }}: {
{% for metric in metrics %}
'{{ metric|metric_name }}': {{ metric|metric_argument_name }},
{% endfor %}
},
{% endif %}
{% endfor %}
},
{% if event_metric_exists %}
events: [event],
{% endif %}
ping_info: {
seq: 0, // this is required, however doesn't seem to be useful in server context
start_time: timestamp,
@ -140,11 +171,98 @@ class {{ ping|event_class_name }} {
// this is similar to how FxA currently logs with mozlog: https://github.com/mozilla/fxa/blob/4c5c702a7fcbf6f8c6b1f175e9172cdd21471eac/packages/fxa-auth-server/lib/log.js#L289
_logger.info(GLEAN_EVENT_MOZLOG_TYPE, ping);
}
{% if event_metric_exists %}
{% for event in metrics_by_type["event"] %}
/**
* Record and submit a {{ event.category }}_{{ event.name }} event:
* {{ event.description|clean_string }}
* Event is logged using internal mozlog logger.
*
* @param {string} user_agent - The user agent.
* @param {string} ip_address - The IP address. Will be used to decode Geo
* information and scrubbed at ingestion.
{% for metric_type, metrics in metrics_by_type.items() %}
{% if metric_type != 'event' %}
{% for metric in metrics %}
* @param { {{-metric|js_metric_type-}} } {{ metric|metric_argument_name }} - {{ metric.description|clean_string }}.
{% endfor %}
{% endif %}
{% endfor %}
{% if event.extra_keys %}
{% for extra, metadata in event.extra_keys.items() %}
* @param { {{-metadata.type-}} } {{ extra }} - {{ metadata.description|clean_string }}.
{% endfor %}
{% endif %}
*/
{{ event|event_metric_record_function_name }}({
user_agent,
ip_address,
{% for metric_type, metrics in metrics_by_type.items() %}
{% if metric_type != 'event' %}
{% for metric in metrics %}
{{ metric|metric_argument_name }},
{% endfor %}
{% endif %}
{% endfor %}
{% for extra, metadata in event.extra_keys.items() %}
{{ extra }},
{% endfor %}
{% if lang == "typescript" %}
}: {
user_agent: string,
ip_address: string,
{% for metric_type, metrics in metrics_by_type.items() %}
{% if metric_type != 'event' %}
{% for metric in metrics %}
{{ metric|metric_argument_name }}: {{ metric|js_metric_type }},
{% endfor %}
{% endif %}
{% endfor %}
{% for extra, metadata in event.extra_keys.items() %}
{{ extra }}: {{metadata.type}},
{% endfor %}
{% endif %}
}) {
let event = {
'category': '{{ event.category }}',
'name': '{{ event.name }}',
{% if event.extra_keys %}
'extra': {
{% for extra, metadata in event.extra_keys.items() %}
'{{ extra }}': {{ extra }},
{% endfor %}
},
{% endif %}
};
this.#record({
user_agent,
ip_address,
{% for metric_type, metrics in metrics_by_type.items() %}
{% if metric_type != 'event' %}
{% for metric in metrics %}
{{ metric|metric_argument_name }},
{% endfor %}
{% endif %}
{% endfor %}
event
});
}
{% endfor %}
{% endif %}
}
{% endfor %}
{% for ping in pings %}
export const {{ ping|factory_method }} = function ({
/**
* Factory function that creates an instance of Glean Server Event Logger to
* record `{{ ping }}` ping events.
* @param {string} applicationId - The application ID.
* @param {string} appDisplayVersion - The application display version.
* @param {string} channel - The channel.
* @param {Object} logger_options - The logger options.
* @returns {EventsServerEventLogger} An instance of EventsServerEventLogger.
*/
export const {{ ping|factory_method(event_metric_exists) }} = function ({
applicationId,
appDisplayVersion,
channel,
@ -157,7 +275,7 @@ export const {{ ping|factory_method }} = function ({
logger_options: LoggerOptions;
{% endif %}
}) {
return new {{ ping|event_class_name }}(
return new {{ ping|event_class_name(event_metric_exists) }}(
applicationId,
appDisplayVersion,
channel,

View File

@ -12,32 +12,10 @@ Jinja2 template is not. Please file bugs! #}
require 'json'
require 'securerandom'
require 'logger'
require 'rbconfig'
# this will be used for identifying logs that need to forward to Moz Data Pipeline
GLEAN_EVENT_MOZLOG_TYPE = 'glean-server-event'
# helper module to get OS level info for logs
module OS
def self.name
case RbConfig::CONFIG['host_os']
when /linux/
'Linux'
when /darwin/
'OS X'
when /mswin|mingw32|windows/
'Windows'
when /solaris/
'Solaris'
when /bsd/
'BSD'
else
RbConfig::CONFIG['host_os']
end
end
end
module Glean
{% for ping, metrics_by_type in pings.items() %}
class {{ ping|ping_class_name }}
@ -105,7 +83,7 @@ module Glean
'client_info' => {
'telemetry_sdk_build' => 'glean_parser v{{ parser_version }}',
'first_run_date' => 'Unknown',
'os' => OS.name,
'os' => 'Unknown',
'os_version' => 'Unknown',
'architecture' => 'Unknown',
'app_build' => 'Unknown',

View File

@ -2161,7 +2161,6 @@ def resolve_egg_link(path):
return next(dist_groups, ())
if hasattr(pkgutil, 'ImpImporter'):
register_finder(pkgutil.ImpImporter, find_on_path)
if hasattr(importlib_machinery, 'FileFinder'):
@ -2313,7 +2312,6 @@ def file_ns_handler(importer, path_item, packageName, module):
return subpath
if hasattr(pkgutil, 'ImpImporter'):
register_namespace_handler(pkgutil.ImpImporter, file_ns_handler)
register_namespace_handler(zipimport.zipimporter, file_ns_handler)

19
third_party/python/poetry.lock generated vendored
View File

@ -592,14 +592,14 @@ files = [
[[package]]
name = "glean-parser"
version = "10.0.3"
version = "11.0.1"
description = "Parser tools for Mozilla's Glean telemetry"
category = "main"
optional = false
python-versions = "*"
files = [
{file = "glean_parser-10.0.3-py3-none-any.whl", hash = "sha256:f8fddd87b24552541318ac037e33750d27d0045131e4f8a60ec13a159fcbdd5c"},
{file = "glean_parser-10.0.3.tar.gz", hash = "sha256:d57359629d295f9ee570068a2846966892e3fedb722259ecbcd8cc376d299b51"},
{file = "glean_parser-11.0.1-py3-none-any.whl", hash = "sha256:f6991ba1438909d1fb6f96d3efaaef2a92098eceff39d5d998d3bbb170276c6a"},
{file = "glean_parser-11.0.1.tar.gz", hash = "sha256:79e523b51b0fddce9f6c6309fa8c64328bb706b2d6c847a53f88a93d01695e43"},
]
[package.dependencies]
@ -1129,6 +1129,7 @@ files = [
{file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938"},
{file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d"},
{file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515"},
{file = "PyYAML-6.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290"},
{file = "PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924"},
{file = "PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d"},
{file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"},
@ -1136,8 +1137,16 @@ files = [
{file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"},
{file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"},
{file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"},
{file = "PyYAML-6.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b"},
{file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"},
{file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"},
{file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"},
{file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"},
{file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef"},
{file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"},
{file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"},
{file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"},
{file = "PyYAML-6.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df"},
{file = "PyYAML-6.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47"},
{file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98"},
{file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c"},
@ -1154,6 +1163,7 @@ files = [
{file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5"},
{file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696"},
{file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735"},
{file = "PyYAML-6.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6"},
{file = "PyYAML-6.0.1-cp38-cp38-win32.whl", hash = "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206"},
{file = "PyYAML-6.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62"},
{file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"},
@ -1161,6 +1171,7 @@ files = [
{file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"},
{file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0"},
{file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c"},
{file = "PyYAML-6.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5"},
{file = "PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c"},
{file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"},
{file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"},
@ -1595,4 +1606,4 @@ testing = ["func-timeout", "jaraco.itertools", "pytest (>=4.6)", "pytest-black (
[metadata]
lock-version = "2.0"
python-versions = "^3.8"
content-hash = "d1328039230fe6a6f421e1242613b311774f6702471f55edcc9ba664e6c3df80"
content-hash = "8f6e38dcef9aba9437efbfb39d7cce3b0bb2d1ca42fae2aafe56ab86e2ae3084"

View File

@ -22,7 +22,7 @@ fluent.migrate==0.12.0
fluent.syntax==0.19.0
# Pin `frozenlist` as it is required for `aiohttp`. Use minimum required version.
frozenlist==1.1.1
glean_parser==10.0.3
glean_parser==11.0.1
importlib-metadata==6.0.0
# required for compatibility with Flask >= 2 in tools/tryselect/selectors/chooser
jinja2==3.1.2

View File

@ -275,9 +275,9 @@ frozenlist==1.1.1 ; python_version >= "3.8" and python_version < "4.0" \
giturlparse==0.10.0 ; python_version >= "3.8" and python_version < "4.0" \
--hash=sha256:04ba1a3a099c3093fa8d24a422913c6a9b2c2cd22bcffc939cf72e3e98f672d7 \
--hash=sha256:2595ab291d30717cda8474b874c9fd509f1b9802ad7f6968c36a45e4b13eb337
glean-parser==10.0.3 ; python_version >= "3.8" and python_version < "4.0" \
--hash=sha256:d57359629d295f9ee570068a2846966892e3fedb722259ecbcd8cc376d299b51 \
--hash=sha256:f8fddd87b24552541318ac037e33750d27d0045131e4f8a60ec13a159fcbdd5c
glean-parser==11.0.1 ; python_version >= "3.8" and python_version < "4.0" \
--hash=sha256:79e523b51b0fddce9f6c6309fa8c64328bb706b2d6c847a53f88a93d01695e43 \
--hash=sha256:f6991ba1438909d1fb6f96d3efaaef2a92098eceff39d5d998d3bbb170276c6a
idna==2.10 ; python_version >= "3.8" and python_version < "4.0" \
--hash=sha256:b307872f855b18632ce0c21c5e45be78c0ea7ae4c15c828c20788b26921eb3f6 \
--hash=sha256:b97d804b1e9b523befed77c48dacec60e6dcb0b5391d57af6a65a312a90648c0
@ -460,7 +460,9 @@ python-slugify==8.0.1 ; python_version >= "3.8" and python_version < "4.0" \
--hash=sha256:70ca6ea68fe63ecc8fa4fcf00ae651fc8a5d02d93dcd12ae6d4fc7ca46c4d395 \
--hash=sha256:ce0d46ddb668b3be82f4ed5e503dbc33dd815d83e2eb6824211310d3fb172a27
pyyaml==6.0.1 ; python_version >= "3.8" and python_version < "4.0" \
--hash=sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5 \
--hash=sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc \
--hash=sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df \
--hash=sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741 \
--hash=sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206 \
--hash=sha256:18aeb1bf9a78867dc38b259769503436b7c72f7a1f1f4c93ff9a17de54319b27 \
@ -468,7 +470,10 @@ pyyaml==6.0.1 ; python_version >= "3.8" and python_version < "4.0" \
--hash=sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62 \
--hash=sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98 \
--hash=sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696 \
--hash=sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290 \
--hash=sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9 \
--hash=sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d \
--hash=sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6 \
--hash=sha256:4fb147e7a67ef577a588a0e2c17b6db51dda102c71de36f8549b6816a96e1867 \
--hash=sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47 \
--hash=sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486 \
@ -476,11 +481,15 @@ pyyaml==6.0.1 ; python_version >= "3.8" and python_version < "4.0" \
--hash=sha256:596106435fa6ad000c2991a98fa58eeb8656ef2325d7e158344fb33864ed87e3 \
--hash=sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007 \
--hash=sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938 \
--hash=sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0 \
--hash=sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c \
--hash=sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735 \
--hash=sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d \
--hash=sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28 \
--hash=sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4 \
--hash=sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba \
--hash=sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8 \
--hash=sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef \
--hash=sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5 \
--hash=sha256:afd7e57eddb1a54f0f1a974bc4391af8bcce0b444685d936840f125cf046d5bd \
--hash=sha256:b1275ad35a5d18c62a7220633c913e1b42d44b46ee12554e5fd39c70a243d6a3 \
@ -493,7 +502,9 @@ pyyaml==6.0.1 ; python_version >= "3.8" and python_version < "4.0" \
--hash=sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43 \
--hash=sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859 \
--hash=sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673 \
--hash=sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54 \
--hash=sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a \
--hash=sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b \
--hash=sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab \
--hash=sha256:f22ac1c3cac4dbc50079e965eba2c1058622631e526bd9afd45fedd49ba781fa \
--hash=sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c \

File diff suppressed because one or more lines are too long

View File

@ -11,9 +11,9 @@
[package]
edition = "2021"
rust-version = "1.65"
rust-version = "1.66"
name = "glean-core"
version = "56.0.0"
version = "56.1.0"
authors = [
"Jan-Erik Rediger <jrediger@mozilla.com>",
"The Glean Team <glean-team@mozilla.com>",
@ -35,7 +35,7 @@ license = "MPL-2.0"
repository = "https://github.com/mozilla/glean"
[package.metadata.glean]
glean-parser = "10.0.0"
glean-parser = "11.0.1"
[dependencies.bincode]
version = "1.2.1"

View File

@ -381,6 +381,16 @@ impl Glean {
.size
.accumulate_sync(self, size.get() as i64)
}
if let Some(rkv_load_state) = self
.data_store
.as_ref()
.and_then(|database| database.rkv_load_state())
{
self.database_metrics
.rkv_load_error
.set_sync(self, rkv_load_state)
}
}
/// Signals that the environment is ready to submit pings.

View File

@ -38,7 +38,13 @@ pub type SingleStore = rkv::SingleStore<rkv::backend::SafeModeDatabase>;
/// cbindgen:ignore
pub type Writer<'t> = rkv::Writer<rkv::backend::SafeModeRwTransaction<'t>>;
pub fn rkv_new(path: &Path) -> std::result::Result<Rkv, rkv::StoreError> {
#[derive(Debug)]
pub enum RkvLoadState {
Ok,
Err(rkv::StoreError),
}
pub fn rkv_new(path: &Path) -> std::result::Result<(Rkv, RkvLoadState), rkv::StoreError> {
match Rkv::new::<rkv::backend::SafeMode>(path) {
// An invalid file can mean:
// 1. An empty file.
@ -50,15 +56,20 @@ pub fn rkv_new(path: &Path) -> std::result::Result<Rkv, rkv::StoreError> {
let safebin = path.join("data.safe.bin");
fs::remove_file(safebin).map_err(|_| rkv::StoreError::FileInvalid)?;
// Now try again, we only handle that error once.
Rkv::new::<rkv::backend::SafeMode>(path)
let rkv = Rkv::new::<rkv::backend::SafeMode>(path)?;
Ok((rkv, RkvLoadState::Err(rkv::StoreError::FileInvalid)))
}
Err(rkv::StoreError::DatabaseCorrupted) => {
let safebin = path.join("data.safe.bin");
fs::remove_file(safebin).map_err(|_| rkv::StoreError::DatabaseCorrupted)?;
// Try again, only allowing the error once.
Rkv::new::<rkv::backend::SafeMode>(path)
let rkv = Rkv::new::<rkv::backend::SafeMode>(path)?;
Ok((rkv, RkvLoadState::Err(rkv::StoreError::DatabaseCorrupted)))
}
other => {
let rkv = other?;
Ok((rkv, RkvLoadState::Ok))
}
other => other,
}
}
@ -173,8 +184,11 @@ pub struct Database {
/// so as to persist them to disk using rkv in bulk on demand.
ping_lifetime_data: Option<RwLock<BTreeMap<String, Metric>>>,
// Initial file size when opening the database.
/// Initial file size when opening the database.
file_size: Option<NonZeroU64>,
/// RKV load state
rkv_load_state: RkvLoadState,
}
impl std::fmt::Debug for Database {
@ -232,7 +246,7 @@ impl Database {
log::debug!("Database path: {:?}", path.display());
let file_size = database_size(&path);
let rkv = Self::open_rkv(&path)?;
let (rkv, rkv_load_state) = Self::open_rkv(&path)?;
let user_store = rkv.open_single(Lifetime::User.as_str(), StoreOptions::create())?;
let ping_store = rkv.open_single(Lifetime::Ping.as_str(), StoreOptions::create())?;
let application_store =
@ -250,6 +264,7 @@ impl Database {
application_store,
ping_lifetime_data,
file_size,
rkv_load_state,
};
db.load_ping_lifetime_data();
@ -262,6 +277,15 @@ impl Database {
self.file_size
}
/// Get the rkv load state.
pub fn rkv_load_state(&self) -> Option<String> {
if let RkvLoadState::Err(e) = &self.rkv_load_state {
Some(e.to_string())
} else {
None
}
}
fn get_store(&self, lifetime: Lifetime) -> &SingleStore {
match lifetime {
Lifetime::User => &self.user_store,
@ -271,14 +295,14 @@ impl Database {
}
/// Creates the storage directories and inits rkv.
fn open_rkv(path: &Path) -> Result<Rkv> {
fn open_rkv(path: &Path) -> Result<(Rkv, RkvLoadState)> {
fs::create_dir_all(path)?;
let rkv = rkv_new(path)?;
let (rkv, load_state) = rkv_new(path)?;
migrate(path, &rkv);
log::info!("Database initialized");
Ok(rkv)
Ok((rkv, load_state))
}
/// Build the key of the final location of the data in the database.
@ -1484,9 +1508,13 @@ mod test {
let f = File::create(safebin).expect("create database file");
drop(f);
Database::new(dir.path(), false).unwrap();
let db = Database::new(dir.path(), false).unwrap();
assert!(dir.path().exists());
assert!(
matches!(db.rkv_load_state, RkvLoadState::Err(_)),
"Load error recorded"
);
}
#[test]
@ -1501,9 +1529,13 @@ mod test {
let safebin = database_dir.join("data.safe.bin");
fs::write(safebin, "<broken>").expect("write to database file");
Database::new(dir.path(), false).unwrap();
let db = Database::new(dir.path(), false).unwrap();
assert!(dir.path().exists());
assert!(
matches!(db.rkv_load_state, RkvLoadState::Err(_)),
"Load error recorded"
);
}
#[test]

View File

@ -261,6 +261,9 @@ impl UploadMetrics {
#[derive(Debug)]
pub struct DatabaseMetrics {
pub size: MemoryDistributionMetric,
/// RKV's load result, indicating success or relaying the detected error.
pub rkv_load_error: StringMetric,
}
impl DatabaseMetrics {
@ -277,6 +280,15 @@ impl DatabaseMetrics {
},
MemoryUnit::Byte,
),
rkv_load_error: StringMetric::new(CommonMetricData {
name: "rkv_load_error".into(),
category: "glean.error".into(),
send_in_pings: vec!["metrics".into()],
lifetime: Lifetime::Ping,
disabled: false,
dynamic_label: None,
}),
}
}
}

View File

@ -1077,11 +1077,13 @@ fn records_database_file_size() {
let dir = tempfile::tempdir().unwrap();
let tmpname = dir.path().display().to_string();
// Initialize Glean once to ensure we create the database.
// Initialize Glean once to ensure we create the database and did not error.
let glean = Glean::with_options(&tmpname, GLOBAL_APPLICATION_ID, true);
let database_size = &glean.database_metrics.size;
let data = database_size.get_value(&glean, "metrics");
assert!(data.is_none());
drop(glean);
// Initialize Glean again to record file size.
@ -1094,6 +1096,11 @@ fn records_database_file_size() {
// We should see the database containing some data.
assert!(data.sum > 0);
let rkv_load_state = &glean.database_metrics.rkv_load_error;
let rkv_load_error = rkv_load_state.get_value(&glean, "metrics");
assert_eq!(rkv_load_error, None);
}
#[cfg(not(target_os = "windows"))]

View File

@ -309,28 +309,6 @@ impl PingMaker {
})
}
/// Collects a snapshot for the given ping from storage and attach required meta information.
///
/// # Arguments
///
/// * `glean` - the [`Glean`] instance to collect data from.
/// * `ping` - the ping to collect for.
/// * `reason` - an optional reason code to include in the ping.
///
/// # Returns
///
/// A fully assembled ping payload in a string encoded as JSON.
/// If there is no data stored for the ping, `None` is returned.
pub fn collect_string(
&self,
glean: &Glean,
ping: &PingType,
reason: Option<&str>,
) -> Option<String> {
self.collect(glean, ping, reason, "", "")
.map(|ping| ::serde_json::to_string_pretty(&ping.content).unwrap())
}
/// Gets the path to a directory for ping storage.
///
/// The directory will be created inside the `data_path`.

View File

@ -1 +1 @@
{"files":{"Cargo.toml":"74decb71ef8b82a2fa24b7d0073ce8833b9703a139c2555e7d50162de2414f13","LICENSE":"1f256ecad192880510e84ad60474eab7589218784b9a50bc7ceee34c2b91f1d5","README.md":"5627cc81e6187ab6c2b4dff061af16d559edcab64ba786bac39daa69c703c595","src/common_test.rs":"de47b53dcca37985c0a2b8c02daecbf32309aa54f5a4dd9290719c2c1fd0fa55","src/configuration.rs":"186b9d92e48f2f34f1ea51023ad83c9d7abec97bcb0b862641bcb79a93c97d9e","src/core_metrics.rs":"fef8fb4e5fa57c179836c6eb2cf59278fe3b8b036dbe57b0ff02971b4acd822f","src/lib.rs":"ffbfb09082bc7c758fcfa974226c7b7da75c88f259526a9ba085c511e1db1fa1","src/net/http_uploader.rs":"43812a70d19a38e8d7a093c8076c2b6345372c3c861b0f3511428762700a65e0","src/net/mod.rs":"612a9f13ade0b202c8762bccc7b5dc288101cb3820e47be2755331911a221c55","src/private/event.rs":"d7c70c02648584c19c73af89e5180d3c6153c911f2c6830f7d1599b18d6150eb","src/private/mod.rs":"eb8fe4e588bb32a54617324db39319920c627e6fc23c23cf4da5c17c63e0afed","src/private/ping.rs":"da7545b8fc3b8cbaa8f598dc18fa4ba7c499573c360e8de6e1714d38dd4a665d","src/system.rs":"6eae5b41c15eba9cad6dbd116abe3519ee3e1fe034e79bdd692b029829a8c384","src/test.rs":"3ff6cf151f416e7a8d0f1b54ff28360ad7ebd3dcf47df02c08a8039702d636d9","tests/common/mod.rs":"08fb9483d9b6ed9fe873b4395245166ae8a15263be750c7a8e298c41d9604745","tests/init_fails.rs":"96bbb67ec64976f505fc05eb2c2e101f06c11bd2eaf6a0c6383b1a3e05a1cf4b","tests/never_init.rs":"2cf13a67b34cda8447f489cf3755eba0595978d242d29025670f9bb7c1025937","tests/no_time_to_init.rs":"5fd92258e3fb0302c7f8ab1dee374ece7343cc727206d9da134442bca746b88d","tests/overflowing_preinit.rs":"7ad4b2274dd9240b53430859a4eb1d2597cf508a5a678333f3d3abbadd2ed4a7","tests/persist_ping_lifetime.rs":"81415dc1d74743f02269f0d0dfa524003147056853f080276972e64a0b761d3c","tests/persist_ping_lifetime_nopanic.rs":"18379d3ffbf4a2c8c684c04ff7a0660b86dfbbb447db2d24dfed6073cb7ddf8f","tests/schema.rs":"e611cc168b648b5f515c54873c71b3e5e86431afa2aaff94581eeeb4f1d4935d","tests/simple.rs":"3a762995c06c0adc5adb94ad9c37e41dbbcf08a96b87bc20a449240fa0d93b0c","tests/test-shutdown-blocking.sh":"9b16a01c190c7062474dd92182298a3d9a27928c8fa990340fdd798e6cdb7ab2","tests/test-thread-crashing.sh":"ff1bc8e5d7e4ba3a10d0d38bef222db8bfba469e7d30e45b1053d177a4084f09","tests/upload_timing.rs":"4100ddba97cad28e1abfeb1492dfff61d151a67360392393d6f90d891b3e86be"},"package":"4bd4421c9e77e098f774ce712128179069dd6a56904d3b95c9cf35b8418e3d6a"}
{"files":{"Cargo.toml":"2e86b801bfa27e59ddbe046a773d7ba937df8cef968e6d0c55ed7f534a77806e","LICENSE":"1f256ecad192880510e84ad60474eab7589218784b9a50bc7ceee34c2b91f1d5","README.md":"5627cc81e6187ab6c2b4dff061af16d559edcab64ba786bac39daa69c703c595","src/common_test.rs":"de47b53dcca37985c0a2b8c02daecbf32309aa54f5a4dd9290719c2c1fd0fa55","src/configuration.rs":"186b9d92e48f2f34f1ea51023ad83c9d7abec97bcb0b862641bcb79a93c97d9e","src/core_metrics.rs":"fef8fb4e5fa57c179836c6eb2cf59278fe3b8b036dbe57b0ff02971b4acd822f","src/lib.rs":"ffbfb09082bc7c758fcfa974226c7b7da75c88f259526a9ba085c511e1db1fa1","src/net/http_uploader.rs":"43812a70d19a38e8d7a093c8076c2b6345372c3c861b0f3511428762700a65e0","src/net/mod.rs":"612a9f13ade0b202c8762bccc7b5dc288101cb3820e47be2755331911a221c55","src/private/event.rs":"d7c70c02648584c19c73af89e5180d3c6153c911f2c6830f7d1599b18d6150eb","src/private/mod.rs":"eb8fe4e588bb32a54617324db39319920c627e6fc23c23cf4da5c17c63e0afed","src/private/ping.rs":"da7545b8fc3b8cbaa8f598dc18fa4ba7c499573c360e8de6e1714d38dd4a665d","src/system.rs":"6eae5b41c15eba9cad6dbd116abe3519ee3e1fe034e79bdd692b029829a8c384","src/test.rs":"3ff6cf151f416e7a8d0f1b54ff28360ad7ebd3dcf47df02c08a8039702d636d9","tests/common/mod.rs":"08fb9483d9b6ed9fe873b4395245166ae8a15263be750c7a8e298c41d9604745","tests/init_fails.rs":"96bbb67ec64976f505fc05eb2c2e101f06c11bd2eaf6a0c6383b1a3e05a1cf4b","tests/never_init.rs":"2cf13a67b34cda8447f489cf3755eba0595978d242d29025670f9bb7c1025937","tests/no_time_to_init.rs":"5fd92258e3fb0302c7f8ab1dee374ece7343cc727206d9da134442bca746b88d","tests/overflowing_preinit.rs":"7ad4b2274dd9240b53430859a4eb1d2597cf508a5a678333f3d3abbadd2ed4a7","tests/persist_ping_lifetime.rs":"81415dc1d74743f02269f0d0dfa524003147056853f080276972e64a0b761d3c","tests/persist_ping_lifetime_nopanic.rs":"18379d3ffbf4a2c8c684c04ff7a0660b86dfbbb447db2d24dfed6073cb7ddf8f","tests/schema.rs":"e611cc168b648b5f515c54873c71b3e5e86431afa2aaff94581eeeb4f1d4935d","tests/simple.rs":"3a762995c06c0adc5adb94ad9c37e41dbbcf08a96b87bc20a449240fa0d93b0c","tests/test-shutdown-blocking.sh":"9b16a01c190c7062474dd92182298a3d9a27928c8fa990340fdd798e6cdb7ab2","tests/test-thread-crashing.sh":"ff1bc8e5d7e4ba3a10d0d38bef222db8bfba469e7d30e45b1053d177a4084f09","tests/upload_timing.rs":"4100ddba97cad28e1abfeb1492dfff61d151a67360392393d6f90d891b3e86be"},"package":"e12e51799c1e40ba51f24e0ff232d35ea321403920bea31dc11de1afaeb541ef"}

View File

@ -11,9 +11,9 @@
[package]
edition = "2021"
rust-version = "1.65"
rust-version = "1.66"
name = "glean"
version = "56.0.0"
version = "56.1.0"
authors = [
"Jan-Erik Rediger <jrediger@mozilla.com>",
"The Glean Team <glean-team@mozilla.com>",
@ -42,7 +42,7 @@ features = ["serde"]
version = "0.5"
[dependencies.glean-core]
version = "56.0.0"
version = "56.1.0"
[dependencies.inherent]
version = "1"

View File

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

View File

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