diff --git a/.vscode/settings.json b/.vscode/settings.json index 6f5c4edd3..031c62f57 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,3 +1,8 @@ { - "rust-analyzer.cargo.features": "all" + "rust-analyzer.cargo.features": "all", + "rust-analyzer.rustfmt.overrideCommand": [ + "rustfmt", + "+nightly-2025-01-15", + "--" + ], } diff --git a/Cargo.lock b/Cargo.lock index fc1c83800..be6e0ee91 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -183,18 +183,17 @@ dependencies = [ [[package]] name = "axum" -version = "0.6.20" +version = "0.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b829e4e32b91e643de6eafe82b1d90675f5874230191a4ffbc1b336dec4d6bf" +checksum = "edca88bc138befd0323b20752846e6587272d3b03b0343c8ea28a6f819e6e71f" dependencies = [ "async-trait", - "axum-core 0.3.4", - "bitflags 1.3.2", + "axum-core 0.4.5", "bytes", "futures-util", - "http 0.2.12", - "http-body 0.4.6", - "hyper 0.14.32", + "http", + "http-body", + "http-body-util", "itoa", "matchit 0.7.3", "memchr", @@ -203,26 +202,26 @@ dependencies = [ "pin-project-lite", "rustversion", "serde", - "sync_wrapper 0.1.2", - "tower 0.4.13", + "sync_wrapper", + "tower 0.5.2", "tower-layer", "tower-service", ] [[package]] name = "axum" -version = "0.8.1" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d6fd624c75e18b3b4c6b9caf42b1afe24437daaee904069137d8bab077be8b8" +checksum = "de45108900e1f9b9242f7f2e254aa3e2c029c921c258fe9e6b4217eeebd54288" dependencies = [ - "axum-core 0.5.0", + "axum-core 0.5.2", "bytes", "form_urlencoded", "futures-util", - "http 1.3.1", - "http-body 1.0.1", + "http", + "http-body", "http-body-util", - "hyper 1.6.0", + "hyper", "hyper-util", "itoa", "matchit 0.8.4", @@ -235,7 +234,7 @@ dependencies = [ "serde_json", "serde_path_to_error", "serde_urlencoded", - "sync_wrapper 1.0.2", + "sync_wrapper", "tokio", "tower 0.5.2", "tower-layer", @@ -245,36 +244,39 @@ dependencies = [ [[package]] name = "axum-core" -version = "0.3.4" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "759fa577a247914fd3f7f76d62972792636412fbfd634cd452f6a385a74d2d2c" +checksum = "09f2bd6146b97ae3359fa0cc6d6b376d9539582c7b4220f041a33ec24c226199" dependencies = [ "async-trait", "bytes", "futures-util", - "http 0.2.12", - "http-body 0.4.6", + "http", + "http-body", + "http-body-util", "mime", + "pin-project-lite", "rustversion", + "sync_wrapper", "tower-layer", "tower-service", ] [[package]] name = "axum-core" -version = "0.5.0" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df1362f362fd16024ae199c1970ce98f9661bf5ef94b9808fee734bc3698b733" +checksum = "68464cd0412f486726fb3373129ef5d2993f90c34bc2bc1c1e9943b2f4fc7ca6" dependencies = [ "bytes", - "futures-util", - "http 1.3.1", - "http-body 1.0.1", + "futures-core", + "http", + "http-body", "http-body-util", "mime", "pin-project-lite", "rustversion", - "sync_wrapper 1.0.2", + "sync_wrapper", "tower-layer", "tower-service", "tracing", @@ -303,7 +305,7 @@ dependencies = [ "miniz_oxide", "object", "rustc-demangle", - "windows-targets", + "windows-targets 0.52.6", ] [[package]] @@ -336,7 +338,7 @@ version = "0.69.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "271383c67ccabffb7381723dea0672a673f292304fcb45c01cc648c7a8d58088" dependencies = [ - "bitflags 2.9.0", + "bitflags", "cexpr", "clang-sys", "itertools 0.12.1", @@ -368,12 +370,6 @@ version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" -[[package]] -name = "bitflags" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" - [[package]] name = "bitflags" version = "2.9.0" @@ -419,9 +415,9 @@ checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" [[package]] name = "cc" -version = "1.2.16" +version = "1.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be714c154be609ec7f5dad223a33bf1482fff90472de28f7362806e6d4832b8c" +checksum = "1fcb57c740ae1daf453ae85f16e37396f672b039e00d9d866e07ddb24e328e3a" dependencies = [ "jobserver", "libc", @@ -466,9 +462,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.32" +version = "4.5.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6088f3ae8c3608d19260cd7445411865a485688711b78b5be70d78cd96136f83" +checksum = "e958897981290da2a852763fe9cdb89cd36977a5d729023127095fa94d95e2ff" dependencies = [ "clap_builder", "clap_derive", @@ -476,9 +472,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.32" +version = "4.5.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22a7ef7f676155edfb82daa97f99441f3ebf4a58d5e32f295a56259f1b6facc8" +checksum = "83b0f35019843db2160b5bb19ae09b4e6411ac33fc6a712003c33e03090e2489" dependencies = [ "anstream", "anstyle", @@ -658,9 +654,9 @@ dependencies = [ [[package]] name = "darling" -version = "0.20.10" +version = "0.20.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989" +checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee" dependencies = [ "darling_core", "darling_macro", @@ -668,9 +664,9 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.20.10" +version = "0.20.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5" +checksum = "0d00b9596d185e565c2207a0b01f8bd1a135483d02d9b7b0a54b11da8d53412e" dependencies = [ "fnv", "ident_case", @@ -682,9 +678,9 @@ dependencies = [ [[package]] name = "darling_macro" -version = "0.20.10" +version = "0.20.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" +checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ "darling_core", "quote", @@ -693,9 +689,9 @@ dependencies = [ [[package]] name = "delegate" -version = "0.13.2" +version = "0.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "297806318ef30ad066b15792a8372858020ae3ca2e414ee6c2133b1eb9e9e945" +checksum = "b9b6483c2bbed26f97861cf57651d4f2b731964a28cd2257f934a4b452480d21" dependencies = [ "proc-macro2", "quote", @@ -728,9 +724,9 @@ dependencies = [ [[package]] name = "deranged" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c9e6a11ca8224451684bc0d7d5a7adbf8f2fd6887261a1cfc3c0432f9d4068e" +checksum = "28cfac68e08048ae1883171632c2aef3ebc555621ae56fbccce1cbf22dd7f058" dependencies = [ "powerfmt", ] @@ -915,9 +911,9 @@ dependencies = [ [[package]] name = "event-listener-strategy" -version = "0.5.3" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c3e4e0dd3673c1139bf041f3008816d9cf2946bbfac2945c09e523b8d7b05b2" +checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" dependencies = [ "event-listener", "pin-project-lite", @@ -1170,25 +1166,6 @@ dependencies = [ "subtle", ] -[[package]] -name = "h2" -version = "0.3.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" -dependencies = [ - "bytes", - "fnv", - "futures-core", - "futures-sink", - "futures-util", - "http 0.2.12", - "indexmap 2.8.0", - "slab", - "tokio", - "tokio-util", - "tracing", -] - [[package]] name = "h2" version = "0.4.8" @@ -1200,7 +1177,7 @@ dependencies = [ "fnv", "futures-core", "futures-sink", - "http 1.3.1", + "http", "indexmap 2.8.0", "slab", "tokio", @@ -1234,7 +1211,7 @@ dependencies = [ "base64 0.21.7", "bytes", "headers-core", - "http 1.3.1", + "http", "httpdate", "mime", "sha1", @@ -1246,7 +1223,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "54b4a22553d4242c49fddb9ba998a99962b5cc6f22cb5a3482bec22522403ce4" dependencies = [ - "http 1.3.1", + "http", ] [[package]] @@ -1255,12 +1232,6 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" -[[package]] -name = "hermit-abi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" - [[package]] name = "hmac" version = "0.12.1" @@ -1290,17 +1261,6 @@ dependencies = [ "windows", ] -[[package]] -name = "http" -version = "0.2.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" -dependencies = [ - "bytes", - "fnv", - "itoa", -] - [[package]] name = "http" version = "1.3.1" @@ -1312,17 +1272,6 @@ dependencies = [ "itoa", ] -[[package]] -name = "http-body" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" -dependencies = [ - "bytes", - "http 0.2.12", - "pin-project-lite", -] - [[package]] name = "http-body" version = "1.0.1" @@ -1330,7 +1279,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ "bytes", - "http 1.3.1", + "http", ] [[package]] @@ -1341,8 +1290,8 @@ checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" dependencies = [ "bytes", "futures-core", - "http 1.3.1", - "http-body 1.0.1", + "http", + "http-body", "pin-project-lite", ] @@ -1358,30 +1307,6 @@ version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" -[[package]] -name = "hyper" -version = "0.14.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41dfc780fdec9373c01bae43289ea34c972e40ee3c9f6b3c8801a35f35586ce7" -dependencies = [ - "bytes", - "futures-channel", - "futures-core", - "futures-util", - "h2 0.3.26", - "http 0.2.12", - "http-body 0.4.6", - "httparse", - "httpdate", - "itoa", - "pin-project-lite", - "socket2", - "tokio", - "tower-service", - "tracing", - "want", -] - [[package]] name = "hyper" version = "1.6.0" @@ -1391,9 +1316,9 @@ dependencies = [ "bytes", "futures-channel", "futures-util", - "h2 0.4.8", - "http 1.3.1", - "http-body 1.0.1", + "h2", + "http", + "http-body", "httparse", "httpdate", "itoa", @@ -1412,8 +1337,8 @@ dependencies = [ "bytes", "futures-util", "headers", - "http 1.3.1", - "hyper 1.6.0", + "http", + "hyper", "hyper-rustls", "hyper-util", "pin-project-lite", @@ -1430,8 +1355,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2d191583f3da1305256f22463b9bb0471acad48a4e534a5218b9963e9c1f59b2" dependencies = [ "futures-util", - "http 1.3.1", - "hyper 1.6.0", + "http", + "hyper", "hyper-util", "log", "rustls", @@ -1442,25 +1367,13 @@ dependencies = [ "tower-service", ] -[[package]] -name = "hyper-timeout" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1" -dependencies = [ - "hyper 0.14.32", - "pin-project-lite", - "tokio", - "tokio-io-timeout", -] - [[package]] name = "hyper-timeout" version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b90d566bffbce6a75bd8b09a05aa8c2cb1fabb6cb348f8840c9e4c90a0d83b0" dependencies = [ - "hyper 1.6.0", + "hyper", "hyper-util", "pin-project-lite", "tokio", @@ -1469,16 +1382,17 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.10" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df2dcfbe0677734ab2f3ffa7fa7bfd4706bfdc1ef393f2ee30184aed67e631b4" +checksum = "497bbc33a26fdd4af9ed9c70d63f61cf56a938375fbb32df34db9b1cd6d643f2" dependencies = [ "bytes", "futures-channel", "futures-util", - "http 1.3.1", - "http-body 1.0.1", - "hyper 1.6.0", + "http", + "http-body", + "hyper", + "libc", "pin-project-lite", "socket2", "tokio", @@ -1527,9 +1441,9 @@ dependencies = [ [[package]] name = "icu_locid_transform_data" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e" +checksum = "7515e6d781098bf9f7205ab3fc7e9709d34554ae0b21ddbcb5febfa4bc7df11d" [[package]] name = "icu_normalizer" @@ -1551,9 +1465,9 @@ dependencies = [ [[package]] name = "icu_normalizer_data" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516" +checksum = "c5e8338228bdc8ab83303f16b797e177953730f601a96c25d10cb3ab0daa0cb7" [[package]] name = "icu_properties" @@ -1572,9 +1486,9 @@ dependencies = [ [[package]] name = "icu_properties_data" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569" +checksum = "85fb8799753b75aee8d2a21d7c14d9f38921b54b3dbda10f5a3c7a7b82dba5e2" [[package]] name = "icu_provider" @@ -1667,10 +1581,10 @@ dependencies = [ ] [[package]] -name = "integer-encoding" -version = "3.0.4" +name = "ipnet" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bb03732005da905c88227371639bf1ad885cc712789c011c31c5fb3ab3ccf02" +checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" [[package]] name = "is_terminal_polyfill" @@ -1820,13 +1734,13 @@ dependencies = [ "either", "futures", "home", - "http 1.3.1", - "http-body 1.0.1", + "http", + "http-body", "http-body-util", - "hyper 1.6.0", + "hyper", "hyper-http-proxy", "hyper-rustls", - "hyper-timeout 0.5.2", + "hyper-timeout", "hyper-util", "jsonpath-rust", "k8s-openapi", @@ -1853,7 +1767,7 @@ checksum = "ff0d0793db58e70ca6d689489183816cb3aa481673e7433dc618cf7e8007c675" dependencies = [ "chrono", "form_urlencoded", - "http 1.3.1", + "http", "json-patch", "k8s-openapi", "schemars", @@ -1933,7 +1847,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc2f4eb4bc735547cfed7c0a4922cbd04a4655978c09b54f1f7b228750664c34" dependencies = [ "cfg-if", - "windows-targets", + "windows-targets 0.52.6", ] [[package]] @@ -1978,9 +1892,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.26" +version = "0.4.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30bde2b3dc3671ae49d8e2e9f044c7c005836e7a023ee57cffa25ab82764bb9e" +checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" [[package]] name = "matchers" @@ -2114,16 +2028,6 @@ dependencies = [ "libm", ] -[[package]] -name = "num_cpus" -version = "1.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" -dependencies = [ - "hermit-abi", - "libc", -] - [[package]] name = "object" version = "0.36.7" @@ -2135,9 +2039,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.21.1" +version = "1.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d75b0bedcc4fe52caa0e03d9f1151a323e4aa5e2d78ba3580400cd3c9e2bc4bc" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" [[package]] name = "openssl-probe" @@ -2147,25 +2051,24 @@ checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" [[package]] name = "opentelemetry" -version = "0.23.0" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b69a91d4893e713e06f724597ad630f1fa76057a5e1026c0ca67054a9032a76" +checksum = "236e667b670a5cdf90c258f5a55794ec5ac5027e960c224bff8367a59e1e6426" dependencies = [ "futures-core", "futures-sink", "js-sys", - "once_cell", "pin-project-lite", - "thiserror 1.0.69", + "thiserror 2.0.12", + "tracing", ] [[package]] name = "opentelemetry-appender-tracing" -version = "0.4.0" +version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be314095f27dde46fca7038b023457d2b3459e1c39033dacc2ec1b31df11a61c" +checksum = "c513c7af3bec30113f3d4620134ff923295f1e9c580fda2b8abe0831f925ddc0" dependencies = [ - "once_cell", "opentelemetry", "tracing", "tracing-core", @@ -2173,44 +2076,45 @@ dependencies = [ ] [[package]] -name = "opentelemetry-jaeger" -version = "0.22.0" +name = "opentelemetry-http" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "501b471b67b746d9a07d4c29f8be00f952d1a2eca356922ede0098cbaddff19f" +checksum = "a8863faf2910030d139fb48715ad5ff2f35029fc5f244f6d5f689ddcf4d26253" dependencies = [ "async-trait", - "futures-core", - "futures-util", + "bytes", + "http", "opentelemetry", - "opentelemetry-semantic-conventions", - "opentelemetry_sdk", - "thrift", - "tokio", + "reqwest", + "tracing", ] [[package]] name = "opentelemetry-otlp" -version = "0.16.0" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a94c69209c05319cdf7460c6d4c055ed102be242a0a6245835d7bc42c6ec7f54" +checksum = "5bef114c6d41bea83d6dc60eb41720eedd0261a67af57b66dd2b84ac46c01d91" dependencies = [ "async-trait", "futures-core", - "http 0.2.12", + "http", "opentelemetry", + "opentelemetry-http", "opentelemetry-proto", "opentelemetry_sdk", "prost", - "thiserror 1.0.69", + "reqwest", + "thiserror 2.0.12", "tokio", "tonic", + "tracing", ] [[package]] name = "opentelemetry-proto" -version = "0.6.0" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "984806e6cf27f2b49282e2a05e288f30594f3dbc74eb7a6e99422bc48ed78162" +checksum = "56f8870d3024727e99212eb3bb1762ec16e255e3e6f58eeb3dc8db1aa226746d" dependencies = [ "opentelemetry", "opentelemetry_sdk", @@ -2218,33 +2122,25 @@ dependencies = [ "tonic", ] -[[package]] -name = "opentelemetry-semantic-conventions" -version = "0.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1869fb4bb9b35c5ba8a1e40c9b128a7b4c010d07091e864a29da19e4fe2ca4d7" - [[package]] name = "opentelemetry_sdk" -version = "0.23.0" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae312d58eaa90a82d2e627fd86e075cf5230b3f11794e2ed74199ebbe572d4fd" +checksum = "84dfad6042089c7fc1f6118b7040dc2eb4ab520abbf410b79dc481032af39570" dependencies = [ "async-trait", "futures-channel", "futures-executor", "futures-util", "glob", - "lazy_static", - "once_cell", "opentelemetry", - "ordered-float 4.6.0", "percent-encoding", "rand 0.8.5", "serde_json", - "thiserror 1.0.69", + "thiserror 2.0.12", "tokio", "tokio-stream", + "tracing", ] [[package]] @@ -2256,15 +2152,6 @@ dependencies = [ "num-traits", ] -[[package]] -name = "ordered-float" -version = "4.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bb71e1b3fa6ca1c61f383464aaf2bb0e2f8e772a1f01d486832464de363b951" -dependencies = [ - "num-traits", -] - [[package]] name = "overload" version = "0.1.1" @@ -2309,7 +2196,7 @@ dependencies = [ "libc", "redox_syscall", "smallvec", - "windows-targets", + "windows-targets 0.52.6", ] [[package]] @@ -2339,9 +2226,9 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pest" -version = "2.7.15" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b7cafe60d6cf8e62e1b9b2ea516a089c008945bb5a275416789e7db0bc199dc" +checksum = "198db74531d58c70a361c42201efde7e2591e976d518caf7662a47dc5720e7b6" dependencies = [ "memchr", "thiserror 2.0.12", @@ -2350,9 +2237,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.7.15" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "816518421cfc6887a0d62bf441b6ffb4536fcc926395a69e1a85852d4363f57e" +checksum = "d725d9cfd79e87dccc9341a2ef39d1b6f6353d68c4b33c177febbe1a402c97c5" dependencies = [ "pest", "pest_generator", @@ -2360,9 +2247,9 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.7.15" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d1396fd3a870fc7838768d171b4616d5c91f6cc25e377b673d714567d99377b" +checksum = "db7d01726be8ab66ab32f9df467ae8b1148906685bbe75c82d1e65d7f5b3f841" dependencies = [ "pest", "pest_meta", @@ -2373,9 +2260,9 @@ dependencies = [ [[package]] name = "pest_meta" -version = "2.7.15" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1e58089ea25d717bfd31fb534e4f3afcc2cc569c70de3e239778991ea3b7dea" +checksum = "7f9f832470494906d1fca5329f8ab5791cc60beb230c74815dff541cbd2b5ca0" dependencies = [ "once_cell", "pest", @@ -2447,7 +2334,7 @@ version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" dependencies = [ - "zerocopy 0.8.23", + "zerocopy 0.8.24", ] [[package]] @@ -2505,9 +2392,9 @@ dependencies = [ [[package]] name = "prost" -version = "0.12.6" +version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "deb1435c188b76130da55f17a466d252ff7b1418b2ad3e037d127b94e3411f29" +checksum = "2796faa41db3ec313a31f7624d9286acf277b52de526150b7e69f3debf891ee5" dependencies = [ "bytes", "prost-derive", @@ -2515,12 +2402,12 @@ dependencies = [ [[package]] name = "prost-derive" -version = "0.12.6" +version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81bddcdb20abf9501610992b6759a4c888aef7d1a7247ef75e2404275ac24af1" +checksum = "8a56d757972c98b346a9b766e3f02746cde6dd1cd1d1d563472929fdd74bec4d" dependencies = [ "anyhow", - "itertools 0.12.1", + "itertools 0.14.0", "proc-macro2", "quote", "syn 2.0.100", @@ -2560,7 +2447,7 @@ checksum = "3779b94aeb87e8bd4e834cee3650289ee9e0d5677f976ecdb6d219e5f4f6cd94" dependencies = [ "rand_chacha 0.9.0", "rand_core 0.9.3", - "zerocopy 0.8.23", + "zerocopy 0.8.24", ] [[package]] @@ -2607,7 +2494,7 @@ version = "0.5.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b8c0c260b63a8219631167be35e6a988e9554dbd323f8bd08439c8ed1302bd1" dependencies = [ - "bitflags 2.9.0", + "bitflags", ] [[package]] @@ -2660,6 +2547,43 @@ version = "1.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba39f3699c378cd8970968dcbff9c43159ea4cfbd88d43c00b22f2ef10a435d2" +[[package]] +name = "reqwest" +version = "0.12.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d19c46a6fdd48bc4dab94b6103fccc55d34c67cc0ad04653aad4ea2a07cd7bbb" +dependencies = [ + "base64 0.22.1", + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-util", + "ipnet", + "js-sys", + "log", + "mime", + "once_cell", + "percent-encoding", + "pin-project-lite", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper", + "tokio", + "tower 0.5.2", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "windows-registry", +] + [[package]] name = "rfc6979" version = "0.4.0" @@ -2773,7 +2697,7 @@ version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ - "bitflags 2.9.0", + "bitflags", "errno", "libc", "linux-raw-sys 0.4.15", @@ -2786,7 +2710,7 @@ version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e56a18552996ac8d29ecc3b190b4fdbb2d91ca4ec396de7bbffaf43f3d637e96" dependencies = [ - "bitflags 2.9.0", + "bitflags", "errno", "libc", "linux-raw-sys 0.9.3", @@ -2851,9 +2775,9 @@ checksum = "917ce264624a4b4db1c364dcc35bfca9ded014d0a958cd47ad3e960e988ea51c" [[package]] name = "rustls-webpki" -version = "0.103.0" +version = "0.103.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0aa4eeac2588ffff23e9d7a7e9b3f971c5fb5b7ebc9452745e0c232c64f83b2f" +checksum = "fef8b8769aaccf73098557a87cd1816b4f9c7c16811c9c77142aa695c16f2c03" dependencies = [ "aws-lc-rs", "ring", @@ -2951,7 +2875,7 @@ version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags 2.9.0", + "bitflags", "core-foundation 0.9.4", "core-foundation-sys", "libc", @@ -2964,7 +2888,7 @@ version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "271720403f46ca04f7ba6f55d438f8bd878d6b8ca0a1046e8228c4145bcbb316" dependencies = [ - "bitflags 2.9.0", + "bitflags", "core-foundation 0.10.0", "core-foundation-sys", "libc", @@ -3002,7 +2926,7 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f3a1a3341211875ef120e117ea7fd5228530ae7e7036a779fdc9117be6b3282c" dependencies = [ - "ordered-float 2.10.1", + "ordered-float", "serde", ] @@ -3205,9 +3129,9 @@ dependencies = [ [[package]] name = "socket2" -version = "0.5.8" +version = "0.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c970269d99b64e60ec3bd6ad27270092a5394c4e309314b18ae3fe575695fbe8" +checksum = "4f5fd57c80058a56cf5c777ab8a126398ece8e442983605d280a44ce79d0edef" dependencies = [ "libc", "windows-sys 0.52.0", @@ -3274,8 +3198,6 @@ dependencies = [ "json-patch", "k8s-openapi", "kube", - "opentelemetry-jaeger", - "opentelemetry_sdk", "product-config", "regex", "rstest", @@ -3293,7 +3215,6 @@ dependencies = [ "tokio", "tracing", "tracing-appender", - "tracing-opentelemetry", "tracing-subscriber", "url", ] @@ -3325,12 +3246,11 @@ dependencies = [ name = "stackable-telemetry" version = "0.3.0" dependencies = [ - "axum 0.8.1", + "axum 0.8.3", "futures-util", "opentelemetry", "opentelemetry-appender-tracing", "opentelemetry-otlp", - "opentelemetry-semantic-conventions", "opentelemetry_sdk", "pin-project", "rstest", @@ -3381,9 +3301,9 @@ dependencies = [ name = "stackable-webhook" version = "0.3.1" dependencies = [ - "axum 0.8.1", + "axum 0.8.3", "futures-util", - "hyper 1.6.0", + "hyper", "hyper-util", "k8s-openapi", "kube", @@ -3457,17 +3377,14 @@ dependencies = [ "unicode-ident", ] -[[package]] -name = "sync_wrapper" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" - [[package]] name = "sync_wrapper" version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +dependencies = [ + "futures-core", +] [[package]] name = "synstructure" @@ -3488,9 +3405,9 @@ checksum = "1ac9aa371f599d22256307c24a9d748c041e548cbf599f35d890f9d365361790" [[package]] name = "tempfile" -version = "3.19.0" +version = "3.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "488960f40a3fd53d72c2a29a58722561dee8afdd175bd88e3db4677d7b2ba600" +checksum = "7437ac7763b9b123ccf33c338a5cc1bac6f69b45a136c19bdd8a65e3916435bf" dependencies = [ "fastrand", "getrandom 0.3.2", @@ -3558,33 +3475,11 @@ dependencies = [ "once_cell", ] -[[package]] -name = "threadpool" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaa" -dependencies = [ - "num_cpus", -] - -[[package]] -name = "thrift" -version = "0.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e54bc85fc7faa8bc175c4bab5b92ba8d9a3ce893d0e9f42cc455c8ab16a9e09" -dependencies = [ - "byteorder", - "integer-encoding", - "log", - "ordered-float 2.10.1", - "threadpool", -] - [[package]] name = "time" -version = "0.3.40" +version = "0.3.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d9c75b47bdff86fa3334a3db91356b8d7d86a9b839dab7d0bdc5c3d3a077618" +checksum = "8a7619e19bc266e0f9c5e6686659d394bc57973859340060a69221e57dbc0c40" dependencies = [ "deranged", "itoa", @@ -3603,9 +3498,9 @@ checksum = "c9e9a38711f559d9e3ce1cdb06dd7c5b8ea546bc90052da6d06bb76da74bb07c" [[package]] name = "time-macros" -version = "0.2.21" +version = "0.2.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29aa485584182073ed57fd5004aa09c371f021325014694e432313345865fd04" +checksum = "3526739392ec93fd8b359c8e98514cb3e8e021beb4e5f597b00a0221f8ed8a49" dependencies = [ "num-conv", "time-core", @@ -3659,16 +3554,6 @@ dependencies = [ "windows-sys 0.52.0", ] -[[package]] -name = "tokio-io-timeout" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30b74022ada614a1b4834de765f9bb43877f910cc8ce4be40e89042c9223a8bf" -dependencies = [ - "pin-project-lite", - "tokio", -] - [[package]] name = "tokio-macros" version = "2.5.0" @@ -3751,24 +3636,27 @@ dependencies = [ [[package]] name = "tonic" -version = "0.11.0" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76c4eb7a4e9ef9d4763600161f12f5070b92a578e1b634db88a6887844c91a13" +checksum = "877c5b330756d856ffcc4553ab34a5684481ade925ecc54bcd1bf02b1d0d4d52" dependencies = [ "async-stream", "async-trait", - "axum 0.6.20", - "base64 0.21.7", + "axum 0.7.9", + "base64 0.22.1", "bytes", "flate2", - "h2 0.3.26", - "http 0.2.12", - "http-body 0.4.6", - "hyper 0.14.32", - "hyper-timeout 0.4.1", + "h2", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-timeout", + "hyper-util", "percent-encoding", "pin-project", "prost", + "socket2", "tokio", "tokio-stream", "tower 0.4.13", @@ -3806,7 +3694,7 @@ dependencies = [ "futures-core", "futures-util", "pin-project-lite", - "sync_wrapper 1.0.2", + "sync_wrapper", "tokio", "tokio-util", "tower-layer", @@ -3821,10 +3709,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "403fa3b783d4b626a8ad51d766ab03cb6d2dbfc46b1c5d4448395e6628dc9697" dependencies = [ "base64 0.22.1", - "bitflags 2.9.0", + "bitflags", "bytes", - "http 1.3.1", - "http-body 1.0.1", + "http", + "http-body", "mime", "pin-project-lite", "tower-layer", @@ -3902,9 +3790,9 @@ dependencies = [ [[package]] name = "tracing-opentelemetry" -version = "0.24.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f68803492bf28ab40aeccaecc7021096bd256baf7ca77c3d425d89b35a7be4e4" +checksum = "721f2d2569dce9f3dfbbddee5906941e953bfcdf736a62da3377f5751650cc36" dependencies = [ "js-sys", "once_cell", @@ -4114,6 +4002,19 @@ dependencies = [ "wasm-bindgen-shared", ] +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.50" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" +dependencies = [ + "cfg-if", + "js-sys", + "once_cell", + "wasm-bindgen", + "web-sys", +] + [[package]] name = "wasm-bindgen-macro" version = "0.2.100" @@ -4146,6 +4047,16 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "web-sys" +version = "0.3.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + [[package]] name = "web-time" version = "1.1.0" @@ -4206,7 +4117,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" dependencies = [ "windows-core", - "windows-targets", + "windows-targets 0.52.6", ] [[package]] @@ -4215,7 +4126,42 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" dependencies = [ - "windows-targets", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-link" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38" + +[[package]] +name = "windows-registry" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4286ad90ddb45071efd1a66dfa43eb02dd0dfbae1545ad6cc3c51cf34d7e8ba3" +dependencies = [ + "windows-result", + "windows-strings", + "windows-targets 0.53.0", +] + +[[package]] +name = "windows-result" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c64fd11a4fd95df68efcfee5f44a294fe71b8bc6a91993e2791938abcc712252" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-strings" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87fa48cc5d406560701792be122a10132491cff9d0aeb23583cc2dcafc847319" +dependencies = [ + "windows-link", ] [[package]] @@ -4224,7 +4170,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets", + "windows-targets 0.52.6", ] [[package]] @@ -4233,7 +4179,7 @@ version = "0.59.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" dependencies = [ - "windows-targets", + "windows-targets 0.52.6", ] [[package]] @@ -4242,14 +4188,30 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_gnullvm", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm 0.52.6", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1e4c7e8ceaaf9cb7d7507c974735728ab453b67ef8f18febdd7c11fe59dca8b" +dependencies = [ + "windows_aarch64_gnullvm 0.53.0", + "windows_aarch64_msvc 0.53.0", + "windows_i686_gnu 0.53.0", + "windows_i686_gnullvm 0.53.0", + "windows_i686_msvc 0.53.0", + "windows_x86_64_gnu 0.53.0", + "windows_x86_64_gnullvm 0.53.0", + "windows_x86_64_msvc 0.53.0", ] [[package]] @@ -4258,48 +4220,96 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" + [[package]] name = "windows_aarch64_msvc" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" + [[package]] name = "windows_i686_gnu" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" +[[package]] +name = "windows_i686_gnu" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3" + [[package]] name = "windows_i686_gnullvm" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" +[[package]] +name = "windows_i686_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" + [[package]] name = "windows_i686_msvc" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" +[[package]] +name = "windows_i686_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" + [[package]] name = "windows_x86_64_gnu" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" +[[package]] +name = "windows_x86_64_gnu" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" + [[package]] name = "windows_x86_64_gnullvm" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" + [[package]] name = "windows_x86_64_msvc" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" +[[package]] +name = "windows_x86_64_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" + [[package]] name = "winnow" version = "0.7.4" @@ -4315,7 +4325,7 @@ version = "0.39.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" dependencies = [ - "bitflags 2.9.0", + "bitflags", ] [[package]] @@ -4385,11 +4395,11 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.8.23" +version = "0.8.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd97444d05a4328b90e75e503a34bad781f14e28a823ad3557f0750df1ebcbc6" +checksum = "2586fea28e186957ef732a5f8b3be2da217d65c5969d4b1e17f973ebbe876879" dependencies = [ - "zerocopy-derive 0.8.23", + "zerocopy-derive 0.8.24", ] [[package]] @@ -4405,9 +4415,9 @@ dependencies = [ [[package]] name = "zerocopy-derive" -version = "0.8.23" +version = "0.8.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6352c01d0edd5db859a63e2605f4ea3183ddbd15e2c4a9e7d32184df75e4f154" +checksum = "a996a8f63c5c4448cd959ac1bab0aaa3306ccfd060472f85943ee0750f0169be" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index b43ada61b..653069811 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -34,12 +34,11 @@ json-patch = "4.0.0" k8s-openapi = { version = "0.24.0", default-features = false, features = ["schemars", "v1_32"] } # We use rustls instead of openssl for easier portability, e.g. so that we can build stackablectl without the need to vendor (build from source) openssl kube = { version = "0.99.0", default-features = false, features = ["client", "jsonpatch", "runtime", "derive", "rustls-tls", "ring"] } -opentelemetry = "0.23.0" -opentelemetry_sdk = { version = "0.23.0", features = ["rt-tokio"] } -opentelemetry-appender-tracing = "0.4.0" -opentelemetry-jaeger = { version = "0.22.0", features = ["rt-tokio"] } -opentelemetry-otlp = "0.16.0" -opentelemetry-semantic-conventions = "0.15.0" +opentelemetry = "0.28.0" +opentelemetry_sdk = { version = "0.28.0", features = ["rt-tokio"] } +opentelemetry-appender-tracing = "0.28.0" +opentelemetry-otlp = "0.28.0" +# opentelemetry-semantic-conventions = "0.28.0" p256 = { version = "0.13.2", features = ["ecdsa"] } pin-project = "1.1.5" prettyplease = "0.2.22" @@ -71,7 +70,7 @@ tower = { version = "0.5.1", features = ["util"] } tower-http = { version = "0.6.1", features = ["trace"] } tracing = "0.1.40" tracing-appender = "0.2.3" -tracing-opentelemetry = "0.24.0" +tracing-opentelemetry = "0.29.0" tracing-subscriber = { version = "0.3.18", features = ["env-filter", "json"] } trybuild = "1.0.99" url = { version = "2.5.2", features = ["serde"] } diff --git a/crates/stackable-operator/CHANGELOG.md b/crates/stackable-operator/CHANGELOG.md index c928bbf11..219d73293 100644 --- a/crates/stackable-operator/CHANGELOG.md +++ b/crates/stackable-operator/CHANGELOG.md @@ -8,6 +8,12 @@ All notable changes to this project will be documented in this file. ### Added +- Add more granular telemetry related arguments to `ProductOperatorRun` ([#977]). + - `--no-console-output`: Disables output of `tracing` events to the console (stdout) + - `--rolling-logs`: Enables output `tracing` events to a rolling log file + - `--rolling-logs-period`: Sets the time period after which log files are rolled over + - `--otlp-traces`: Enables exporting of traces via OTLP + - `--otlp-logs`: Enables exporting of logs via OTLP - Add Deployments to `ClusterResource`s ([#992]). - Add `DeploymentConditionBuilder` ([#993]). @@ -16,7 +22,15 @@ All notable changes to this project will be documented in this file. - Deprecate `stackable_operator::logging::initialize_logging()`. It's recommended to use `stackable-telemetry` or `#[allow(deprecated)]` instead ([#950], [#989]). +### Removed + +- BREAKING: Remove `--tracing-target` argument and field from `ProductOperatorRun`. + Use the new, more granular arguments instead ([#977]). +- BREAKING: Remove `initialize_logging` helper function from `stackable_operator::logging` ([#977]). +- Remove `opentelemetry-jaeger` dependency ([#977]). + [#950]: https://github.com/stackabletech/operator-rs/pull/950 +[#977]: https://github.com/stackabletech/operator-rs/pull/977 [#989]: https://github.com/stackabletech/operator-rs/pull/989 [#992]: https://github.com/stackabletech/operator-rs/pull/992 [#993]: https://github.com/stackabletech/operator-rs/pull/993 diff --git a/crates/stackable-operator/Cargo.toml b/crates/stackable-operator/Cargo.toml index 561fc3a49..07f521cb5 100644 --- a/crates/stackable-operator/Cargo.toml +++ b/crates/stackable-operator/Cargo.toml @@ -26,8 +26,6 @@ indexmap.workspace = true json-patch.workspace = true k8s-openapi.workspace = true kube.workspace = true -opentelemetry_sdk.workspace = true -opentelemetry-jaeger.workspace = true product-config.workspace = true regex.workspace = true schemars.workspace = true @@ -41,7 +39,6 @@ time = { workspace = true, optional = true } tokio.workspace = true tracing.workspace = true tracing-appender.workspace = true -tracing-opentelemetry.workspace = true tracing-subscriber.workspace = true url.workspace = true diff --git a/crates/stackable-operator/src/cli.rs b/crates/stackable-operator/src/cli.rs index a6b93acf1..e38f65739 100644 --- a/crates/stackable-operator/src/cli.rs +++ b/crates/stackable-operator/src/cli.rs @@ -108,6 +108,7 @@ //! use std::{ ffi::OsStr, + ops::Deref, path::{Path, PathBuf}, }; @@ -115,10 +116,7 @@ use clap::Args; use product_config::ProductConfigManager; use snafu::{ResultExt, Snafu}; -use crate::{ - logging::TracingTarget, namespace::WatchNamespace, - utils::cluster_info::KubernetesClusterInfoOpts, -}; +use crate::{namespace::WatchNamespace, utils::cluster_info::KubernetesClusterInfoOpts}; pub const AUTHOR: &str = "Stackable GmbH - info@stackable.tech"; @@ -166,6 +164,12 @@ pub enum Command { /// /// ```rust /// # use stackable_operator::cli::{Command, ProductOperatorRun, ProductConfigPath}; +/// use clap::Parser; +/// use stackable_operator::{ +/// cli::TelemetryArguments, +/// namespace::WatchNamespace, +/// }; +/// /// #[derive(clap::Parser, Debug, PartialEq, Eq)] /// struct Run { /// #[clap(long)] @@ -173,11 +177,6 @@ pub enum Command { /// #[clap(flatten)] /// common: ProductOperatorRun, /// } -/// use clap::Parser; -/// use stackable_operator::{ -/// logging::TracingTarget, -/// namespace::WatchNamespace, -/// }; /// /// let opts = Command::::parse_from(["foobar-operator", "run", "--name", "foo", "--product-config", "bar", "--watch-namespace", "foobar"]); /// assert_eq!(opts, Command::Run(Run { @@ -185,7 +184,7 @@ pub enum Command { /// common: ProductOperatorRun { /// product_config: ProductConfigPath::from("bar".as_ref()), /// watch_namespace: WatchNamespace::One("foobar".to_string()), -/// tracing_target: TracingTarget::None, +/// telemetry_arguments: TelemetryArguments::default(), /// cluster_info_opts: Default::default(), /// }, /// })); @@ -195,12 +194,14 @@ pub enum Command { /// /// ```rust /// # use stackable_operator::cli::{Command, ProductOperatorRun}; +/// use clap::Parser; +/// /// #[derive(clap::Parser, Debug, PartialEq, Eq)] /// struct Run { /// #[arg(long)] /// name: String, /// } -/// use clap::Parser; +/// /// let opts = Command::::parse_from(["foobar-operator", "run", "--name", "foo"]); /// assert_eq!(opts, Command::Run(Run { /// name: "foo".to_string(), @@ -217,9 +218,8 @@ pub struct ProductOperatorRun { #[arg(long, env, default_value = "")] pub watch_namespace: WatchNamespace, - /// Tracing log collector system - #[arg(long, env, default_value_t, value_enum)] - pub tracing_target: TracingTarget, + #[command(flatten)] + pub telemetry_arguments: TelemetryArguments, #[command(flatten)] pub cluster_info_opts: KubernetesClusterInfoOpts, @@ -245,41 +245,83 @@ impl ProductConfigPath { /// Load the [`ProductConfigManager`] from the given path, falling back to the first /// path that exists from `default_search_paths` if none is given by the user. pub fn load(&self, default_search_paths: &[impl AsRef]) -> Result { - ProductConfigManager::from_yaml_file(resolve_path( - self.path.as_deref(), - default_search_paths, - )?) - .context(ProductConfigLoadSnafu) + let resolved_path = Self::resolve_path(self.path.as_deref(), default_search_paths)?; + ProductConfigManager::from_yaml_file(resolved_path).context(ProductConfigLoadSnafu) } -} -/// Check if the path can be found anywhere: -/// 1) User provides path `user_provided_path` to file -> 'Error' if not existing. -/// 2) User does not provide path to file -> search in `default_paths` and -/// take the first existing file. -/// 3) `Error` if nothing was found. -fn resolve_path<'a>( - user_provided_path: Option<&'a Path>, - default_paths: &'a [impl AsRef + 'a], -) -> Result<&'a Path> { - // Use override if specified by the user, otherwise search through defaults given - let search_paths = if let Some(path) = user_provided_path { - vec![path] - } else { - default_paths.iter().map(|path| path.as_ref()).collect() - }; - for path in &search_paths { - if path.exists() { - return Ok(path); + /// Check if the path can be found anywhere + /// + /// 1. User provides path `user_provided_path` to file. Return [`Error`] if not existing. + /// 2. User does not provide path to file -> search in `default_paths` and + /// take the first existing file. + /// 3. Return [`Error`] if nothing was found. + fn resolve_path<'a>( + user_provided_path: Option<&'a Path>, + default_paths: &'a [impl AsRef + 'a], + ) -> Result<&'a Path> { + // Use override if specified by the user, otherwise search through defaults given + let search_paths = if let Some(path) = user_provided_path { + vec![path] + } else { + default_paths.iter().map(|path| path.as_ref()).collect() + }; + for path in &search_paths { + if path.exists() { + return Ok(path); + } } + RequiredFileMissingSnafu { + search_path: search_paths + .into_iter() + .map(PathBuf::from) + .collect::>(), + } + .fail() } - RequiredFileMissingSnafu { - search_path: search_paths - .into_iter() - .map(PathBuf::from) - .collect::>(), +} + +#[derive(Debug, Default, PartialEq, Eq, Args)] +pub struct TelemetryArguments { + /// Disable console output. + #[arg(long, env)] + no_console_output: bool, + + /// Enable logging to rolling files located in the specified DIRECTORY. + #[arg(long, env, value_name = "DIRECTORY", group = "rolling_logs_group")] + rolling_logs: Option, + + /// Time PERIOD after which log files are rolled over. + #[arg(long, env, value_name = "PERIOD", requires = "rolling_logs_group")] + rolling_logs_period: Option, + + /// Enable exporting traces via OTLP. + #[arg(long, env)] + otlp_traces: bool, + + /// Enable exporting logs via OTLP. + #[arg(long, env)] + otlp_logs: bool, +} + +#[derive(Clone, Debug, PartialEq, Eq, strum::Display, strum::EnumString, clap::ValueEnum)] +pub enum RollingPeriod { + Minutely, + Hourly, + Daily, + Never, +} + +impl Deref for RollingPeriod { + type Target = tracing_appender::rolling::Rotation; + + fn deref(&self) -> &Self::Target { + match self { + RollingPeriod::Minutely => &tracing_appender::rolling::Rotation::MINUTELY, + RollingPeriod::Hourly => &tracing_appender::rolling::Rotation::HOURLY, + RollingPeriod::Daily => &tracing_appender::rolling::Rotation::DAILY, + RollingPeriod::Never => &tracing_appender::rolling::Rotation::NEVER, + } } - .fail() } #[cfg(test)] @@ -300,6 +342,7 @@ mod tests { #[test] fn verify_cli() { use clap::CommandFactory; + ProductOperatorRun::command().print_long_help().unwrap(); ProductOperatorRun::command().debug_assert() } @@ -342,7 +385,7 @@ mod tests { let file = File::create(full_path_to_create).expect("create temporary file"); - let found_path = resolve_path( + let found_path = ProductConfigPath::resolve_path( full_user_provided_path.as_deref(), &full_default_locations_ref, )?; @@ -358,13 +401,14 @@ mod tests { #[test] #[should_panic] fn resolve_path_user_path_not_existing() { - resolve_path(Some(USER_PROVIDED_PATH.as_ref()), &[DEPLOY_FILE_PATH]).unwrap(); + ProductConfigPath::resolve_path(Some(USER_PROVIDED_PATH.as_ref()), &[DEPLOY_FILE_PATH]) + .unwrap(); } #[test] fn resolve_path_nothing_found_errors() { if let Err(Error::RequiredFileMissing { search_path }) = - resolve_path(None, &[DEPLOY_FILE_PATH, DEFAULT_FILE_PATH]) + ProductConfigPath::resolve_path(None, &[DEPLOY_FILE_PATH, DEFAULT_FILE_PATH]) { assert_eq!(search_path, vec![ PathBuf::from(DEPLOY_FILE_PATH), @@ -391,8 +435,8 @@ mod tests { assert_eq!(opts, ProductOperatorRun { product_config: ProductConfigPath::from("bar".as_ref()), watch_namespace: WatchNamespace::One("foo".to_string()), - tracing_target: TracingTarget::None, cluster_info_opts: Default::default(), + telemetry_arguments: Default::default(), }); // no cli / no env @@ -400,8 +444,8 @@ mod tests { assert_eq!(opts, ProductOperatorRun { product_config: ProductConfigPath::from("bar".as_ref()), watch_namespace: WatchNamespace::All, - tracing_target: TracingTarget::None, cluster_info_opts: Default::default(), + telemetry_arguments: Default::default(), }); // env with namespace @@ -410,8 +454,8 @@ mod tests { assert_eq!(opts, ProductOperatorRun { product_config: ProductConfigPath::from("bar".as_ref()), watch_namespace: WatchNamespace::One("foo".to_string()), - tracing_target: TracingTarget::None, cluster_info_opts: Default::default(), + telemetry_arguments: Default::default(), }); } } diff --git a/crates/stackable-operator/src/logging/mod.rs b/crates/stackable-operator/src/logging/mod.rs index 7b08643fe..018433287 100644 --- a/crates/stackable-operator/src/logging/mod.rs +++ b/crates/stackable-operator/src/logging/mod.rs @@ -1,106 +1,2 @@ -use std::path::PathBuf; - -use tracing; -use tracing_appender::rolling::{RollingFileAppender, Rotation}; -use tracing_subscriber::{EnvFilter, Registry, layer::SubscriberExt, util::SubscriberInitExt}; - pub mod controller; mod k8s_events; - -#[derive(Debug, Clone, clap::ValueEnum, PartialEq, Eq)] -pub enum TracingTarget { - None, - Jaeger, -} - -impl Default for TracingTarget { - fn default() -> Self { - Self::None - } -} - -/// Initializes `tracing` logging with options from the environment variable -/// given in the `env` parameter. -/// -/// We force users to provide a variable name so it can be different per product. -/// We encourage it to be the product name plus `_LOG`, e.g. `FOOBAR_OPERATOR_LOG`. -/// If no environment variable is provided, the maximum log level is set to INFO. -/// -/// Log output can be copied to a file by setting `{env}_DIRECTORY` (e.g. `FOOBAR_OPERATOR_DIRECTORY`) -/// to a directory path. This file will be rotated regularly. -#[deprecated(note = "Use stackable-telemetry with the OTLP instead of the Jaeger protocol")] -pub fn initialize_logging(env: &str, app_name: &str, tracing_target: TracingTarget) { - let filter = match EnvFilter::try_from_env(env) { - Ok(env_filter) => env_filter, - _ => EnvFilter::try_new(tracing::Level::INFO.to_string()) - .expect("Failed to initialize default tracing level to INFO"), - }; - - let terminal_fmt = tracing_subscriber::fmt::layer(); - - let file_appender_directory = std::env::var_os(format!("{env}_DIRECTORY")).map(PathBuf::from); - let file_fmt = file_appender_directory.as_deref().map(|log_dir| { - let file_appender = RollingFileAppender::builder() - .rotation(Rotation::HOURLY) - .filename_prefix(app_name.to_string()) - .filename_suffix("tracing-rs.json") - .max_log_files(6) - .build(log_dir) - .expect("failed to initialize rolling file appender"); - tracing_subscriber::fmt::layer() - .json() - .with_writer(file_appender) - }); - - let jaeger = match tracing_target { - TracingTarget::Jaeger => { - // FIXME (@Techassi): Replace with opentelemetry_otlp - #[allow(deprecated)] - let jaeger = opentelemetry_jaeger::new_agent_pipeline() - .with_service_name(app_name) - .install_batch(opentelemetry_sdk::runtime::Tokio) - .expect("Failed to initialize Jaeger pipeline"); - let opentelemetry = tracing_opentelemetry::layer().with_tracer(jaeger); - Some(opentelemetry) - } - TracingTarget::None => None, - }; - - Registry::default() - .with(filter) - .with(terminal_fmt) - .with(file_fmt) - .with(jaeger) - .init(); - - // need to delay logging until after tracing is initialized - match file_appender_directory { - Some(dir) => tracing::info!(directory = %dir.display(), "file logging enabled"), - None => tracing::debug!("file logging disabled, because no log directory set"), - } -} - -#[cfg(test)] -mod tests { - - use tracing::{debug, error, info}; - - use crate::logging::TracingTarget; - - // If there is a proper way to programmatically inspect the global max level than we should use that. - // Until then, this is mostly a sanity check for the implementation above. - // Either run - // cargo test default_tracing -- --nocapture - // to see the ERROR and INFO messages, or - // NOT_SET=debug cargo test default_tracing -- --nocapture - // to see them all. - #[test] - #[allow(deprecated)] - fn default_tracing_level_is_set_to_info() { - super::initialize_logging("NOT_SET", "test", TracingTarget::None); - - error!("ERROR level messages should be seen."); - info!("INFO level messages should also be seen by default."); - debug!("DEBUG level messages should be seen only if you set the NOT_SET env var."); - } -} diff --git a/crates/stackable-telemetry/CHANGELOG.md b/crates/stackable-telemetry/CHANGELOG.md index b23b820b7..3773734db 100644 --- a/crates/stackable-telemetry/CHANGELOG.md +++ b/crates/stackable-telemetry/CHANGELOG.md @@ -11,6 +11,17 @@ All notable changes to this project will be documented in this file. - Add `with_rotation_period` method. - Add `with_max_log_files` method. +### Changed + +- Bump OpenTelemetry related dependencies ([#977]). + - `opentelemetry` to 0.28.0 + - `opentelemetry_sdk` to 0.28.0 + - `opentelemetry-appender-tracing` to 0.28.0 + - `opentelemetry-otlp` to 0.28.0 + - `opentelemetry-semantic-conventions` to 0.28.0 + - `tracing-opentelemetry` to 0.29.0 + +[#977]: https://github.com/stackabletech/operator-rs/pull/977 [#995]: https://github.com/stackabletech/operator-rs/pull/995 ## [0.3.0] - 2025-01-30 diff --git a/crates/stackable-telemetry/Cargo.toml b/crates/stackable-telemetry/Cargo.toml index 7792d72be..5bfa77802 100644 --- a/crates/stackable-telemetry/Cargo.toml +++ b/crates/stackable-telemetry/Cargo.toml @@ -11,9 +11,9 @@ axum.workspace = true futures-util.workspace = true opentelemetry = { workspace = true, features = ["logs"] } opentelemetry-appender-tracing.workspace = true -opentelemetry-otlp = { workspace = true, features = ["gzip-tonic", "logs"] } -opentelemetry-semantic-conventions.workspace = true -opentelemetry_sdk = { workspace = true, features = ["logs", "rt-tokio", "logs_level_enabled"] } +opentelemetry-otlp = { workspace = true, features = ["grpc-tonic", "gzip-tonic", "logs"] } +# opentelemetry-semantic-conventions.workspace = true +opentelemetry_sdk = { workspace = true, features = ["logs", "rt-tokio", "spec_unstable_logs_enabled"] } pin-project.workspace = true snafu.workspace = true tokio.workspace = true diff --git a/crates/stackable-telemetry/src/tracing/mod.rs b/crates/stackable-telemetry/src/tracing/mod.rs index 6cb07edc4..ce2e60c5f 100644 --- a/crates/stackable-telemetry/src/tracing/mod.rs +++ b/crates/stackable-telemetry/src/tracing/mod.rs @@ -6,15 +6,13 @@ //! //! To get started, see [`Tracing`]. -use opentelemetry::KeyValue; +use opentelemetry::trace::TracerProvider; use opentelemetry_appender_tracing::layer::OpenTelemetryTracingBridge; +use opentelemetry_otlp::{LogExporter, SpanExporter}; use opentelemetry_sdk::{ - Resource, - logs::{self, LoggerProvider}, - propagation::TraceContextPropagator, - trace, + Resource, logs::SdkLoggerProvider, propagation::TraceContextPropagator, + trace::SdkTracerProvider, }; -use opentelemetry_semantic_conventions::resource; use snafu::{ResultExt as _, Snafu}; use tracing::subscriber::SetGlobalDefaultError; use tracing_appender::rolling::{InitError, RollingFileAppender}; @@ -40,7 +38,7 @@ pub enum Error { #[snafu(display("unable to install opentelemetry log exporter"))] InstallOtelLogExporter { #[allow(missing_docs)] - source: opentelemetry::logs::LogError, + source: opentelemetry_sdk::logs::LogError, }, /// Indicates that [`Tracing`] failed to install the rolling file appender. @@ -240,7 +238,9 @@ pub struct Tracing { file_log_settings: FileLogSettings, otlp_log_settings: OtlpLogSettings, otlp_trace_settings: OtlpTraceSettings, - logger_provider: Option, + + logger_provider: Option, + tracer_provider: Option, } impl Tracing { @@ -318,24 +318,27 @@ impl Tracing { // TODO (@NickLarsenNZ): Remove this directive once https://github.com/open-telemetry/opentelemetry-rust/issues/761 is resolved .add_directive("h2=off".parse().expect("invalid directive")); - let log_exporter = opentelemetry_otlp::new_exporter().tonic(); - let otel_log = - opentelemetry_otlp::new_pipeline() - .logging() - .with_exporter(log_exporter) - .with_log_config(logs::config().with_resource(Resource::new(vec![ - KeyValue::new(resource::SERVICE_NAME, self.service_name), - ]))) - .install_batch(opentelemetry_sdk::runtime::Tokio) - .context(InstallOtelLogExporterSnafu)?; + let log_exporter = LogExporter::builder() + .with_tonic() + .build() + .context(InstallOtelLogExporterSnafu)?; + + let logger_provider = SdkLoggerProvider::builder() + .with_batch_exporter(log_exporter) + .with_resource( + Resource::builder() + .with_service_name(self.service_name) + .build(), + ) + .build(); // Convert `tracing::Event` to OpenTelemetry logs layers.push( - OpenTelemetryTracingBridge::new(&otel_log) + OpenTelemetryTracingBridge::new(&logger_provider) .with_filter(env_filter_layer) .boxed(), ); - self.logger_provider = Some(otel_log); + self.logger_provider = Some(logger_provider); } if let OtlpTraceSettings::Enabled { common_settings } = &self.otlp_trace_settings { @@ -347,22 +350,29 @@ impl Tracing { // TODO (@NickLarsenNZ): Remove this directive once https://github.com/open-telemetry/opentelemetry-rust/issues/761 is resolved .add_directive("h2=off".parse().expect("invalid directive")); - let trace_exporter = opentelemetry_otlp::new_exporter().tonic(); - let otel_tracer = opentelemetry_otlp::new_pipeline() - .tracing() - .with_exporter(trace_exporter) - .with_trace_config(trace::config().with_resource(Resource::new(vec![ - KeyValue::new(resource::SERVICE_NAME, self.service_name), - ]))) - .install_batch(opentelemetry_sdk::runtime::Tokio) + let trace_exporter = SpanExporter::builder() + .with_tonic() + .build() .context(InstallOtelTraceExporterSnafu)?; + let tracer_provider = SdkTracerProvider::builder() + .with_batch_exporter(trace_exporter) + .with_resource( + Resource::builder() + .with_service_name(self.service_name) + .build(), + ) + .build(); + + let tracer = tracer_provider.tracer(self.service_name); + layers.push( tracing_opentelemetry::layer() - .with_tracer(otel_tracer) + .with_tracer(tracer) .with_filter(env_filter_layer) .boxed(), ); + self.tracer_provider = Some(tracer_provider); opentelemetry::global::set_text_map_propagator( // NOTE (@NickLarsenNZ): There are various propagators. Eg: TraceContextPropagator @@ -395,11 +405,10 @@ impl Drop for Tracing { "shutting down opentelemetry OTLP providers" ); - if self.otlp_trace_settings.is_enabled() { - // NOTE (@NickLarsenNZ): This might eventually be replaced with something like SdkMeterProvider::shutdown(&self) - // as has been done with the LoggerProvider (further below) - // see: https://github.com/open-telemetry/opentelemetry-rust/pull/1412/files#r1409608679 - opentelemetry::global::shutdown_tracer_provider(); + if let Some(tracer_provider) = &self.tracer_provider { + if let Err(error) = tracer_provider.shutdown() { + tracing::error!(%error, "unable to shutdown TracerProvider") + } } if let Some(logger_provider) = &self.logger_provider { @@ -584,6 +593,7 @@ impl TracingBuilder { otlp_trace_settings: self.otlp_trace_settings, file_log_settings: self.file_log_settings, logger_provider: None, + tracer_provider: None, } } }