diff --git a/Cargo.lock b/Cargo.lock index 77b494e19..ebff4b205 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -120,9 +120,9 @@ dependencies = [ [[package]] name = "allocator-api2" -version = "0.2.18" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" +checksum = "45862d1c77f2228b9e10bc609d5bc203d86ebc9b87ad8d5d5167a6c9abf739d9" [[package]] name = "android-tzdata" @@ -546,9 +546,9 @@ checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "aws-lc-rs" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdd82dba44d209fddb11c190e0a94b78651f95299598e472215667417a03ff1d" +checksum = "fe7c2840b66236045acd2607d5866e274380afd87ef99d6226e961e2cb47df45" dependencies = [ "aws-lc-sys", "mirai-annotations", @@ -558,9 +558,9 @@ dependencies = [ [[package]] name = "aws-lc-sys" -version = "0.22.0" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df7a4168111d7eb622a31b214057b8509c0a7e1794f44c546d742330dc793972" +checksum = "ad3a619a9de81e1d7de1f1186dcba4506ed661a0e483d84410fdef0ee87b2f96" dependencies = [ "bindgen", "cc", @@ -874,9 +874,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.1.31" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2e7962b54006dcfcc61cb72735f4d89bb97061dd6a7ed882ec6b8ee53714c6f" +checksum = "f34d93e62b03caf570cccc334cbc6c2fceca82f39211051345108adcba3eebdc" dependencies = [ "jobserver", "libc", @@ -904,6 +904,12 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + [[package]] name = "chacha20" version = "0.9.1" @@ -1709,9 +1715,9 @@ checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" [[package]] name = "encoding_rs" -version = "0.8.34" +version = "0.8.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" dependencies = [ "cfg-if", ] @@ -1783,7 +1789,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "531e46835a22af56d1e3b66f04844bed63158bc094a628bec1d321d9b4c44bf2" dependencies = [ "bit-set", - "regex-automata 0.4.8", + "regex-automata 0.4.9", "regex-syntax 0.8.5", ] @@ -2834,9 +2840,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.11" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" +checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" [[package]] name = "jni" @@ -2869,10 +2875,11 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.72" +version = "0.3.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a88f1bda2bd75b0452a14784937d796722fdebfe50df998aeb3f0b7603019a9" +checksum = "a865e038f7f6ed956f788f0d7d60c541fff74c7bd74272c5d4cf15c63743e705" dependencies = [ + "once_cell", "wasm-bindgen", ] @@ -3051,9 +3058,9 @@ dependencies = [ [[package]] name = "litemap" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "643cb0b8d4fcc284004d5fd0d67ccf61dfffadb7f75e1e71bc420f4688a3a704" +checksum = "4ee93343901ab17bd981295f2cf0026d4ad018c7c31ba84549a4ddbb47a45104" [[package]] name = "litrs" @@ -3171,15 +3178,15 @@ dependencies = [ "mas-templates", "mas-tower", "oauth2-types", - "opentelemetry 0.24.0", - "opentelemetry-http 0.13.0", + "opentelemetry", + "opentelemetry-http", "opentelemetry-jaeger-propagator", "opentelemetry-otlp", "opentelemetry-prometheus", "opentelemetry-resource-detectors", - "opentelemetry-semantic-conventions 0.16.0", + "opentelemetry-semantic-conventions", "opentelemetry-stdout", - "opentelemetry_sdk 0.27.1", + "opentelemetry_sdk", "prometheus", "rand", "rand_chacha", @@ -3313,8 +3320,8 @@ dependencies = [ "minijinja-contrib", "nonzero_ext", "oauth2-types", - "opentelemetry 0.24.0", - "opentelemetry-semantic-conventions 0.16.0", + "opentelemetry", + "opentelemetry-semantic-conventions", "pbkdf2", "pkcs8", "psl", @@ -3352,9 +3359,9 @@ dependencies = [ "headers", "http", "hyper-util", - "opentelemetry 0.24.0", - "opentelemetry-http 0.13.0", - "opentelemetry-semantic-conventions 0.16.0", + "opentelemetry", + "opentelemetry-http", + "opentelemetry-semantic-conventions", "reqwest", "rustls-platform-verifier", "tokio", @@ -3629,7 +3636,7 @@ dependencies = [ "mas-iana", "mas-jose", "oauth2-types", - "opentelemetry 0.24.0", + "opentelemetry", "rand_core", "serde", "serde_json", @@ -3652,7 +3659,7 @@ dependencies = [ "mas-jose", "mas-storage", "oauth2-types", - "opentelemetry-semantic-conventions 0.16.0", + "opentelemetry-semantic-conventions", "rand", "rand_chacha", "sea-query", @@ -3687,7 +3694,7 @@ dependencies = [ "mas-storage-pg", "mas-templates", "mas-tower", - "opentelemetry 0.24.0", + "opentelemetry", "rand", "rand_chacha", "serde", @@ -3737,9 +3744,9 @@ name = "mas-tower" version = "0.12.0" dependencies = [ "http", - "opentelemetry 0.24.0", - "opentelemetry-http 0.13.0", - "opentelemetry-semantic-conventions 0.16.0", + "opentelemetry", + "opentelemetry-http", + "opentelemetry-semantic-conventions", "pin-project-lite", "tower", "tracing", @@ -4070,20 +4077,6 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" -[[package]] -name = "opentelemetry" -version = "0.24.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c365a63eec4f55b7efeceb724f1336f26a9cf3427b70e59e2cd2a5b947fba96" -dependencies = [ - "futures-core", - "futures-sink", - "js-sys", - "once_cell", - "pin-project-lite", - "thiserror 1.0.69", -] - [[package]] name = "opentelemetry" version = "0.27.1" @@ -4098,19 +4091,6 @@ dependencies = [ "tracing", ] -[[package]] -name = "opentelemetry-http" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad31e9de44ee3538fb9d64fe3376c1362f406162434609e79aea2a41a0af78ab" -dependencies = [ - "async-trait", - "bytes", - "http", - "opentelemetry 0.24.0", - "reqwest", -] - [[package]] name = "opentelemetry-http" version = "0.27.0" @@ -4120,7 +4100,8 @@ dependencies = [ "async-trait", "bytes", "http", - "opentelemetry 0.27.1", + "opentelemetry", + "reqwest", ] [[package]] @@ -4129,7 +4110,7 @@ version = "0.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4e33208695c9d3049c848d2abf32f7336ec05cb5c02af1b710e89a99500edeb0" dependencies = [ - "opentelemetry 0.27.1", + "opentelemetry", ] [[package]] @@ -4141,10 +4122,10 @@ dependencies = [ "async-trait", "futures-core", "http", - "opentelemetry 0.27.1", - "opentelemetry-http 0.27.0", + "opentelemetry", + "opentelemetry-http", "opentelemetry-proto", - "opentelemetry_sdk 0.27.1", + "opentelemetry_sdk", "prost", "thiserror 1.0.69", ] @@ -4156,8 +4137,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b834e966ea5e2d03dfe5f2253f03d22cce21403ee940265070eeee96cee0bcc" dependencies = [ "once_cell", - "opentelemetry 0.27.1", - "opentelemetry_sdk 0.27.1", + "opentelemetry", + "opentelemetry_sdk", "prometheus", "protobuf", "tracing", @@ -4169,8 +4150,8 @@ version = "0.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a6e05acbfada5ec79023c85368af14abd0b307c015e9064d249b2a950ef459a6" dependencies = [ - "opentelemetry 0.27.1", - "opentelemetry_sdk 0.27.1", + "opentelemetry", + "opentelemetry_sdk", "prost", "tonic", ] @@ -4181,17 +4162,11 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf6e83d3dca8fe93cfac95cd07313721c9e6e9f8655e7b06d061d4924df1a0cd" dependencies = [ - "opentelemetry 0.27.1", - "opentelemetry-semantic-conventions 0.27.0", - "opentelemetry_sdk 0.27.1", + "opentelemetry", + "opentelemetry-semantic-conventions", + "opentelemetry_sdk", ] -[[package]] -name = "opentelemetry-semantic-conventions" -version = "0.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cefe0543875379e47eb5f1e68ff83f45cc41366a92dfd0d073d513bf68e9a05" - [[package]] name = "opentelemetry-semantic-conventions" version = "0.27.0" @@ -4207,31 +4182,14 @@ dependencies = [ "async-trait", "chrono", "futures-util", - "opentelemetry 0.27.1", - "opentelemetry_sdk 0.27.1", + "opentelemetry", + "opentelemetry_sdk", "ordered-float", "serde", "serde_json", "thiserror 1.0.69", ] -[[package]] -name = "opentelemetry_sdk" -version = "0.24.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "692eac490ec80f24a17828d49b40b60f5aeaccdfe6a503f939713afd22bc28df" -dependencies = [ - "async-trait", - "futures-channel", - "futures-executor", - "futures-util", - "once_cell", - "opentelemetry 0.24.0", - "percent-encoding", - "rand", - "thiserror 1.0.69", -] - [[package]] name = "opentelemetry_sdk" version = "0.27.1" @@ -4243,7 +4201,7 @@ dependencies = [ "futures-executor", "futures-util", "glob", - "opentelemetry 0.27.1", + "opentelemetry", "percent-encoding", "rand", "serde_json", @@ -4667,9 +4625,9 @@ dependencies = [ [[package]] name = "prettyplease" -version = "0.2.24" +version = "0.2.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "910d41a655dac3b764f1ade94821093d3610248694320cd072303a8eedcf221d" +checksum = "64d1ec885c64d0457d564db4ec299b2dae3f9c02808b8ad9c3a089c591b18033" dependencies = [ "proc-macro2", "syn", @@ -4695,9 +4653,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.88" +version = "1.0.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c3a7fc5db1e57d5a779a352c8cdb57b29aa4c40cc69c3a68a7fedc815fbf2f9" +checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" dependencies = [ "unicode-ident", ] @@ -4811,9 +4769,9 @@ dependencies = [ [[package]] name = "quinn" -version = "0.11.5" +version = "0.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c7c5fdde3cdae7203427dc4f0a68fe0ed09833edc525a03456b153b79828684" +checksum = "62e96808277ec6f97351a2380e6c25114bc9e67037775464979f3037c92d05ef" dependencies = [ "bytes", "pin-project-lite", @@ -4822,34 +4780,38 @@ dependencies = [ "rustc-hash 2.0.0", "rustls", "socket2", - "thiserror 1.0.69", + "thiserror 2.0.3", "tokio", "tracing", ] [[package]] name = "quinn-proto" -version = "0.11.8" +version = "0.11.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fadfaed2cd7f389d0161bb73eeb07b7b78f8691047a6f3e73caaeae55310a4a6" +checksum = "a2fe5ef3495d7d2e377ff17b1a8ce2ee2ec2a18cde8b6ad6619d65d0701c135d" dependencies = [ "bytes", + "getrandom", "rand", "ring", "rustc-hash 2.0.0", "rustls", + "rustls-pki-types", "slab", - "thiserror 1.0.69", + "thiserror 2.0.3", "tinyvec", "tracing", + "web-time", ] [[package]] name = "quinn-udp" -version = "0.5.5" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fe68c2e9e1a1234e218683dbdf9f9dfcb094113c5ac2b938dfcb9bab4c4140b" +checksum = "7d5a626c6807713b15cac82a6acaccd6043c9a5408c24baae07611fec3f243da" dependencies = [ + "cfg_aliases", "libc", "once_cell", "socket2", @@ -4961,7 +4923,7 @@ checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.4.8", + "regex-automata 0.4.9", "regex-syntax 0.8.5", ] @@ -4985,9 +4947,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.8" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" dependencies = [ "aho-corasick", "memchr", @@ -5189,9 +5151,9 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.37" +version = "0.38.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811" +checksum = "d7f649912bc1495e167a6edee79151c84b1bad49748cb4f1f1167f459f6224f6" dependencies = [ "bitflags 2.6.0", "errno", @@ -5243,6 +5205,9 @@ name = "rustls-pki-types" version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "16f1201b3c9a7ee8039bcadc17b7e605e2945b27eee7631788c1bd2b0643674b" +dependencies = [ + "web-time", +] [[package]] name = "rustls-platform-verifier" @@ -6124,9 +6089,9 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "syn" -version = "2.0.87" +version = "2.0.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25aa4ce346d03a6dcd68dd8b4010bcb74e54e62c90c573f394c46eae99aba32d" +checksum = "919d3b74a5dd0ccd15aeb8f93e7006bd9e14c295087c9896a110f490752bcf31" dependencies = [ "proc-macro2", "quote", @@ -6561,14 +6526,14 @@ dependencies = [ [[package]] name = "tracing-opentelemetry" -version = "0.25.0" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9784ed4da7d921bc8df6963f8c80a0e4ce34ba6ba76668acadd3edbd985ff3b" +checksum = "97a971f6058498b5c0f1affa23e7ea202057a7301dbff68e968b2d578bcbd053" dependencies = [ "js-sys", "once_cell", - "opentelemetry 0.24.0", - "opentelemetry_sdk 0.24.1", + "opentelemetry", + "opentelemetry_sdk", "tracing", "tracing-core", "tracing-subscriber", @@ -6656,9 +6621,9 @@ checksum = "5ab17db44d7388991a428b2ee655ce0c212e862eff1768a455c58f9aad6e7893" [[package]] name = "unicode-ident" -version = "1.0.13" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" +checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" [[package]] name = "unicode-normalization" @@ -6774,9 +6739,9 @@ checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" [[package]] name = "value-bag" -version = "1.9.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a84c137d37ab0142f0f2ddfe332651fdbf252e7b7dbb4e67b6c1f1b2e925101" +checksum = "3ef4c4aa54d5d05a279399bfa921ec387b7aba77caf7a682ae8d86785b8fdad2" [[package]] name = "vcpkg" @@ -6823,9 +6788,9 @@ checksum = "b8dad83b4f25e74f184f64c43b150b91efe7647395b42289f38e50566d82855b" [[package]] name = "wasm-bindgen" -version = "0.2.95" +version = "0.2.97" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "128d1e363af62632b8eb57219c8fd7877144af57558fb2ef0368d0087bddeb2e" +checksum = "d15e63b4482863c109d70a7b8706c1e364eb6ea449b201a76c5b89cedcec2d5c" dependencies = [ "cfg-if", "once_cell", @@ -6834,9 +6799,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.95" +version = "0.2.97" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb6dd4d3ca0ddffd1dd1c9c04f94b868c37ff5fac97c30b97cff2d74fce3a358" +checksum = "8d36ef12e3aaca16ddd3f67922bc63e48e953f126de60bd33ccc0101ef9998cd" dependencies = [ "bumpalo", "log", @@ -6849,21 +6814,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.45" +version = "0.4.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc7ec4f8827a71586374db3e87abdb5a2bb3a15afed140221307c3ec06b1f63b" +checksum = "9dfaf8f50e5f293737ee323940c7d8b08a66a95a419223d9f41610ca08b0833d" dependencies = [ "cfg-if", "js-sys", + "once_cell", "wasm-bindgen", "web-sys", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.95" +version = "0.2.97" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e79384be7f8f5a9dd5d7167216f022090cf1f9ec128e6e6a482a2cb5c5422c56" +checksum = "705440e08b42d3e4b36de7d66c944be628d579796b8090bfa3471478a2260051" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -6871,9 +6837,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.95" +version = "0.2.97" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68" +checksum = "98c9ae5a76e46f4deecd0f0255cc223cfa18dc9b261213b8aa0c7b36f61b3f1d" dependencies = [ "proc-macro2", "quote", @@ -6884,9 +6850,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.95" +version = "0.2.97" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d" +checksum = "6ee99da9c5ba11bd675621338ef6fa52296b76b83305e9b6e5c77d4c286d6d49" [[package]] name = "wasm-encoder" @@ -7102,9 +7068,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.72" +version = "0.3.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6488b90108c040df0fe62fa815cbdee25124641df01814dd7282749234c6112" +checksum = "a98bc3c33f0fe7e59ad7cd041b89034fa82a7c2d4365ca538dda6cdaf513863c" dependencies = [ "js-sys", "wasm-bindgen", @@ -7179,7 +7145,7 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.48.0", ] [[package]] @@ -7466,9 +7432,9 @@ checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049" [[package]] name = "yoke" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c5b1314b079b0930c31e3af543d8ee1757b1951ae1e1565ec704403a7240ca5" +checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" dependencies = [ "serde", "stable_deref_trait", @@ -7478,9 +7444,9 @@ dependencies = [ [[package]] name = "yoke-derive" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28cc31741b18cb6f1d5ff12f5b7523e3d6eb0852bbbad19d73905511d9849b95" +checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" dependencies = [ "proc-macro2", "quote", @@ -7511,18 +7477,18 @@ dependencies = [ [[package]] name = "zerofrom" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91ec111ce797d0e0784a1116d0ddcdbea84322cd79e5d5ad173daeba4f93ab55" +checksum = "cff3ee08c995dee1859d998dea82f7374f2826091dd9cd47def953cae446cd2e" dependencies = [ "zerofrom-derive", ] [[package]] name = "zerofrom-derive" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ea7b4a3637ea8669cedf0f1fd5c286a17f3de97b8dd5a70a6c167a1730e63a5" +checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index 9bd92fb71..1efde33bc 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -5,7 +5,6 @@ resolver = "2" # Updated in the CI with a `sed` command package.version = "0.12.0" - package.license = "AGPL-3.0-only" package.authors = ["Element Backend Team"] package.edition = "2021" @@ -337,15 +336,15 @@ version = "0.3.19" # OpenTelemetry [workspace.dependencies.opentelemetry] -version = "0.24.0" +version = "0.27.1" features = ["trace", "metrics"] [workspace.dependencies.opentelemetry-http] -version = "0.13.0" +version = "0.27.0" features = ["reqwest"] [workspace.dependencies.opentelemetry-semantic-conventions] -version = "0.16.0" +version = "0.27.0" [workspace.dependencies.tracing-opentelemetry] -version = "0.25.0" +version = "0.28.0" default-features = false # URL manipulation diff --git a/crates/cli/src/app_state.rs b/crates/cli/src/app_state.rs index 525ec5591..74a0720f7 100644 --- a/crates/cli/src/app_state.rs +++ b/crates/cli/src/app_state.rs @@ -25,10 +25,7 @@ use mas_router::UrlBuilder; use mas_storage::{BoxClock, BoxRepository, BoxRng, SystemClock}; use mas_storage_pg::PgRepository; use mas_templates::Templates; -use opentelemetry::{ - metrics::{Histogram, MetricsError}, - KeyValue, -}; +use opentelemetry::{metrics::Histogram, KeyValue}; use rand::SeedableRng; use sqlx::PgPool; @@ -55,50 +52,45 @@ pub struct AppState { impl AppState { /// Init the metrics for the app state. - /// - /// # Errors - /// - /// Returns an error if the metrics could not be initialized. - pub fn init_metrics(&mut self) -> Result<(), MetricsError> { + pub fn init_metrics(&mut self) { // XXX: do we want to put that somewhere else? - let meter = opentelemetry::global::meter_with_version( - env!("CARGO_PKG_NAME"), - Some(env!("CARGO_PKG_VERSION")), - Some(opentelemetry_semantic_conventions::SCHEMA_URL), - None, - ); + let scope = opentelemetry::InstrumentationScope::builder(env!("CARGO_PKG_NAME")) + .with_version(env!("CARGO_PKG_VERSION")) + .with_schema_url(opentelemetry_semantic_conventions::SCHEMA_URL) + .build(); + let meter = opentelemetry::global::meter_with_scope(scope); + let pool = self.pool.clone(); - let usage = meter + meter .i64_observable_up_down_counter("db.connections.usage") .with_description("The number of connections that are currently in `state` described by the state attribute.") .with_unit("{connection}") - .init(); + .with_callback(move |instrument| { + let idle = u32::try_from(pool.num_idle()).unwrap_or(u32::MAX); + let used = pool.size() - idle; + instrument.observe(i64::from(idle), &[KeyValue::new("state", "idle")]); + instrument.observe(i64::from(used), &[KeyValue::new("state", "used")]); + }) + .build(); - let max = meter + let pool = self.pool.clone(); + meter .i64_observable_up_down_counter("db.connections.max") .with_description("The maximum number of open connections allowed.") .with_unit("{connection}") - .init(); - - // Observe the number of active and idle connections in the pool - meter.register_callback(&[usage.as_any(), max.as_any()], move |observer| { - let idle = u32::try_from(pool.num_idle()).unwrap_or(u32::MAX); - let used = pool.size() - idle; - let max_conn = pool.options().get_max_connections(); - observer.observe_i64(&usage, i64::from(idle), &[KeyValue::new("state", "idle")]); - observer.observe_i64(&usage, i64::from(used), &[KeyValue::new("state", "used")]); - observer.observe_i64(&max, i64::from(max_conn), &[]); - })?; + .with_callback(move |instrument| { + let max_conn = pool.options().get_max_connections(); + instrument.observe(i64::from(max_conn), &[]); + }) + .build(); // Track the connection acquisition time let histogram = meter .u64_histogram("db.client.connections.create_time") .with_description("The time it took to create a new connection.") .with_unit("ms") - .init(); + .build(); self.conn_acquisition_histogram = Some(histogram); - - Ok(()) } /// Init the metadata cache. diff --git a/crates/cli/src/commands/server.rs b/crates/cli/src/commands/server.rs index 0b0efdc31..bb607f983 100644 --- a/crates/cli/src/commands/server.rs +++ b/crates/cli/src/commands/server.rs @@ -228,7 +228,7 @@ impl Options { limiter, conn_acquisition_histogram: None, }; - s.init_metrics()?; + s.init_metrics(); // XXX: this might panic s.init_metadata_cache().await; s diff --git a/crates/cli/src/server.rs b/crates/cli/src/server.rs index 23b6d61de..17825f2ac 100644 --- a/crates/cli/src/server.rs +++ b/crates/cli/src/server.rs @@ -248,14 +248,14 @@ pub fn build_router( router .layer( InFlightCounterLayer::new("http.server.active_requests").on_request(( - name.map(|name| MAS_LISTENER_NAME.string(name.to_owned())), + name.map(|name| KeyValue::new(MAS_LISTENER_NAME, name.to_owned())), metrics_attributes_fn(on_http_request_labels), )), ) .layer( DurationRecorderLayer::new("http.server.duration") .on_request(( - name.map(|name| MAS_LISTENER_NAME.string(name.to_owned())), + name.map(|name| KeyValue::new(MAS_LISTENER_NAME, name.to_owned())), metrics_attributes_fn(on_http_request_labels), )) .on_response_fn(on_http_response_labels), diff --git a/crates/cli/src/telemetry.rs b/crates/cli/src/telemetry.rs index 90a19c62d..7afc96b0a 100644 --- a/crates/cli/src/telemetry.rs +++ b/crates/cli/src/telemetry.rs @@ -18,16 +18,13 @@ use opentelemetry::{ global, propagation::{TextMapCompositePropagator, TextMapPropagator}, trace::TracerProvider as _, - KeyValue, + InstrumentationScope, KeyValue, }; -use opentelemetry_otlp::MetricsExporterBuilder; +use opentelemetry_otlp::{WithExportConfig, WithHttpConfig}; use opentelemetry_prometheus::PrometheusExporter; use opentelemetry_sdk::{ self, - metrics::{ - reader::{DefaultAggregationSelector, DefaultTemporalitySelector}, - ManualReader, PeriodicReader, SdkMeterProvider, - }, + metrics::{ManualReader, PeriodicReader, SdkMeterProvider}, propagation::{BaggagePropagator, TraceContextPropagator}, trace::{Sampler, Tracer, TracerProvider}, Resource, @@ -41,16 +38,6 @@ static METER_PROVIDER: OnceCell = OnceCell::const_new(); static PROMETHEUS_REGISTRY: OnceCell = OnceCell::const_new(); pub fn setup(config: &TelemetryConfig) -> anyhow::Result> { - global::set_error_handler(|e| { - // Don't log the propagation errors, else we'll log an error on each request if - // the propagation errors aren't there - if matches!(e, opentelemetry::global::Error::Propagation(_)) { - return; - } - - tracing::error!(error = &e as &dyn std::error::Error); - })?; - let propagator = propagator(&config.tracing.propagators); // The CORS filter needs to know what headers it should whitelist for @@ -96,22 +83,22 @@ fn stdout_tracer_provider() -> TracerProvider { } fn otlp_tracer_provider(endpoint: Option<&Url>) -> anyhow::Result { - use opentelemetry_otlp::WithExportConfig; - - let mut exporter = opentelemetry_otlp::new_exporter() - .http() + let mut exporter = opentelemetry_otlp::SpanExporter::builder() + .with_http() .with_http_client(mas_http::reqwest_client()); if let Some(endpoint) = endpoint { exporter = exporter.with_endpoint(endpoint.to_string()); } - - let tracer = opentelemetry_otlp::new_pipeline() - .tracing() - .with_exporter(exporter) - .with_trace_config(trace_config()) - .install_batch(opentelemetry_sdk::runtime::Tokio) + let exporter = exporter + .build() .context("Failed to configure OTLP trace exporter")?; + let tracer = opentelemetry_sdk::trace::TracerProvider::builder() + .with_batch_exporter(exporter, opentelemetry_sdk::runtime::Tokio) + .with_resource(resource()) + .with_sampler(Sampler::AlwaysOn) + .build(); + Ok(tracer) } @@ -122,37 +109,35 @@ fn tracer(config: &TracingConfig) -> anyhow::Result> { TracingExporterKind::Otlp => otlp_tracer_provider(config.endpoint.as_ref())?, }; - let tracer = tracer_provider - .tracer_builder(env!("CARGO_PKG_NAME")) + let scope = InstrumentationScope::builder(env!("CARGO_PKG_NAME")) .with_version(env!("CARGO_PKG_VERSION")) .with_schema_url(semcov::SCHEMA_URL) .build(); + let tracer = tracer_provider.tracer_with_scope(scope); + global::set_tracer_provider(tracer_provider); Ok(Some(tracer)) } fn otlp_metric_reader(endpoint: Option<&url::Url>) -> anyhow::Result { - use opentelemetry_otlp::WithExportConfig; - - let mut exporter = opentelemetry_otlp::new_exporter() - .http() + let mut exporter = opentelemetry_otlp::MetricExporter::builder() + .with_http() .with_http_client(mas_http::reqwest_client()); if let Some(endpoint) = endpoint { exporter = exporter.with_endpoint(endpoint.to_string()); } + let exporter = exporter + .build() + .context("Failed to configure OTLP metric exporter")?; - let exporter = MetricsExporterBuilder::from(exporter).build_metrics_exporter( - Box::new(DefaultTemporalitySelector::new()), - Box::new(DefaultAggregationSelector::new()), - )?; - - Ok(PeriodicReader::builder(exporter, opentelemetry_sdk::runtime::Tokio).build()) + let reader = PeriodicReader::builder(exporter, opentelemetry_sdk::runtime::Tokio).build(); + Ok(reader) } fn stdout_metric_reader() -> PeriodicReader { - let exporter = opentelemetry_stdout::MetricsExporter::default(); + let exporter = opentelemetry_stdout::MetricExporter::builder().build(); PeriodicReader::builder(exporter, opentelemetry_sdk::runtime::Tokio).build() } @@ -230,12 +215,6 @@ fn init_meter(config: &MetricsConfig) -> anyhow::Result<()> { Ok(()) } -fn trace_config() -> opentelemetry_sdk::trace::Config { - opentelemetry_sdk::trace::Config::default() - .with_resource(resource()) - .with_sampler(Sampler::AlwaysOn) -} - fn resource() -> Resource { let resource = Resource::new([ KeyValue::new(semcov::resource::SERVICE_NAME, env!("CARGO_PKG_NAME")), diff --git a/crates/handlers/src/activity_tracker/worker.rs b/crates/handlers/src/activity_tracker/worker.rs index 5f2e1caac..4102c1596 100644 --- a/crates/handlers/src/activity_tracker/worker.rs +++ b/crates/handlers/src/activity_tracker/worker.rs @@ -10,7 +10,7 @@ use chrono::{DateTime, Utc}; use mas_storage::{user::BrowserSessionRepository, RepositoryAccess}; use opentelemetry::{ metrics::{Counter, Histogram}, - Key, + Key, KeyValue, }; use sqlx::PgPool; use tokio_util::sync::CancellationToken; @@ -48,18 +48,17 @@ pub struct Worker { impl Worker { pub(crate) fn new(pool: PgPool) -> Self { - let meter = opentelemetry::global::meter_with_version( - env!("CARGO_PKG_NAME"), - Some(env!("CARGO_PKG_VERSION")), - Some(opentelemetry_semantic_conventions::SCHEMA_URL), - None, - ); + let scope = opentelemetry::InstrumentationScope::builder(env!("CARGO_PKG_NAME")) + .with_version(env!("CARGO_PKG_VERSION")) + .with_schema_url(opentelemetry_semantic_conventions::SCHEMA_URL) + .build(); + let meter = opentelemetry::global::meter_with_scope(scope); let message_counter = meter .u64_counter("mas.activity_tracker.messages") .with_description("The number of messages received by the activity tracker") .with_unit("{messages}") - .init(); + .build(); // Record stuff on the counter so that the metrics are initialized for kind in &[ @@ -69,17 +68,20 @@ impl Worker { ] { message_counter.add( 0, - &[TYPE.string("record"), SESSION_KIND.string(kind.as_str())], + &[ + KeyValue::new(TYPE, "record"), + KeyValue::new(SESSION_KIND, kind.as_str()), + ], ); } - message_counter.add(0, &[TYPE.string("flush")]); - message_counter.add(0, &[TYPE.string("shutdown")]); + message_counter.add(0, &[KeyValue::new(TYPE, "flush")]); + message_counter.add(0, &[KeyValue::new(TYPE, "shutdown")]); let flush_time_histogram = meter .u64_histogram("mas.activity_tracker.flush_time") .with_description("The time it took to flush the activity tracker") .with_unit("ms") - .init(); + .build(); Self { pool, @@ -137,7 +139,10 @@ impl Worker { self.message_counter.add( 1, - &[TYPE.string("record"), SESSION_KIND.string(kind.as_str())], + &[ + KeyValue::new(TYPE, "record"), + KeyValue::new(SESSION_KIND, kind.as_str()), + ], ); let record = @@ -153,7 +158,7 @@ impl Worker { } Message::Flush(tx) => { - self.message_counter.add(1, &[TYPE.string("flush")]); + self.message_counter.add(1, &[KeyValue::new(TYPE, "flush")]); self.flush().await; let _ = tx.send(()); @@ -182,11 +187,11 @@ impl Worker { match res { Ok(()) => { self.flush_time_histogram - .record(duration_ms, &[RESULT.string("success")]); + .record(duration_ms, &[KeyValue::new(RESULT, "success")]); } Err(e) => { self.flush_time_histogram - .record(duration_ms, &[RESULT.string("failure")]); + .record(duration_ms, &[KeyValue::new(RESULT, "failure")]); tracing::error!("Failed to flush activity tracker: {}", e); } } diff --git a/crates/http/src/lib.rs b/crates/http/src/lib.rs index c754ec207..be631ff87 100644 --- a/crates/http/src/lib.rs +++ b/crates/http/src/lib.rs @@ -20,10 +20,10 @@ pub use self::{ }; static METER: LazyLock = LazyLock::new(|| { - opentelemetry::global::meter_with_version( - env!("CARGO_PKG_NAME"), - Some(env!("CARGO_PKG_VERSION")), - Some(opentelemetry_semantic_conventions::SCHEMA_URL), - None, - ) + let scope = opentelemetry::InstrumentationScope::builder(env!("CARGO_PKG_NAME")) + .with_version(env!("CARGO_PKG_VERSION")) + .with_schema_url(opentelemetry_semantic_conventions::SCHEMA_URL) + .build(); + + opentelemetry::global::meter_with_scope(scope) }); diff --git a/crates/http/src/reqwest.rs b/crates/http/src/reqwest.rs index 24f1b47cb..b8953386b 100644 --- a/crates/http/src/reqwest.rs +++ b/crates/http/src/reqwest.rs @@ -44,7 +44,7 @@ static HTTP_REQUESTS_DURATION_HISTOGRAM: LazyLock> = LazyLock::ne .u64_histogram(HTTP_CLIENT_REQUEST_DURATION) .with_unit("ms") .with_description("Duration of HTTP client requests") - .init() + .build() }); static HTTP_REQUESTS_IN_FLIGHT: LazyLock> = LazyLock::new(|| { @@ -52,7 +52,7 @@ static HTTP_REQUESTS_IN_FLIGHT: LazyLock> = LazyLock::new(|| .i64_up_down_counter(HTTP_CLIENT_ACTIVE_REQUESTS) .with_unit("{requests}") .with_description("Number of HTTP client requests in flight") - .init() + .build() }); struct TracingResolver { diff --git a/crates/tower/src/lib.rs b/crates/tower/src/lib.rs index 518f3109f..fac8379f8 100644 --- a/crates/tower/src/lib.rs +++ b/crates/tower/src/lib.rs @@ -14,10 +14,10 @@ mod utils; pub use self::{metrics::*, trace_context::*, tracing::*, utils::*}; fn meter() -> opentelemetry::metrics::Meter { - opentelemetry::global::meter_with_version( - env!("CARGO_PKG_NAME"), - Some(env!("CARGO_PKG_VERSION")), - Some(opentelemetry_semantic_conventions::SCHEMA_URL), - None, - ) + let scope = opentelemetry::InstrumentationScope::builder(env!("CARGO_PKG_NAME")) + .with_version(env!("CARGO_PKG_VERSION")) + .with_schema_url(opentelemetry_semantic_conventions::SCHEMA_URL) + .build(); + + opentelemetry::global::meter_with_scope(scope) } diff --git a/crates/tower/src/metrics/duration.rs b/crates/tower/src/metrics/duration.rs index 1f9cb4cc7..9a33a83bf 100644 --- a/crates/tower/src/metrics/duration.rs +++ b/crates/tower/src/metrics/duration.rs @@ -25,7 +25,7 @@ impl DurationRecorderLayer { /// Create a new [`DurationRecorderLayer`]. #[must_use] pub fn new(name: &'static str) -> Self { - let histogram = crate::meter().u64_histogram(name).init(); + let histogram = crate::meter().u64_histogram(name).build(); Self { histogram, on_request: (), diff --git a/crates/tower/src/metrics/in_flight.rs b/crates/tower/src/metrics/in_flight.rs index f9b5b0dae..5d5bd8676 100644 --- a/crates/tower/src/metrics/in_flight.rs +++ b/crates/tower/src/metrics/in_flight.rs @@ -31,7 +31,7 @@ impl InFlightCounterLayer { .i64_up_down_counter(name) .with_unit("{request}") .with_description("The number of in-flight requests") - .init(); + .build(); Self { counter, diff --git a/deny.toml b/deny.toml index 66da68bb1..92a056233 100644 --- a/deny.toml +++ b/deny.toml @@ -30,7 +30,6 @@ allow = [ "MPL-2.0", "OpenSSL", "Unicode-3.0", - "Unicode-DFS-2016", "Zlib", ]