From b77c975a85655d88ab0ac6f6618216f2c44059c8 Mon Sep 17 00:00:00 2001 From: Fletcher Nichol Date: Thu, 11 Jan 2024 17:01:30 -0700 Subject: [PATCH] feat(telemetry): extract otel context & associate with HTTP request spans Signed-off-by: Fletcher Nichol --- Cargo.lock | 60 +++++++++---------- lib/telemetry-http-rs/BUCK | 2 + lib/telemetry-http-rs/Cargo.toml | 2 + lib/telemetry-http-rs/src/lib.rs | 2 + lib/telemetry-http-rs/src/make_span.rs | 7 +++ lib/telemetry-http-rs/src/propagation.rs | 51 ++++++++++++++++ third-party/rust/BUCK | 74 ++++++++++++------------ third-party/rust/Cargo.lock | 38 ++++++------ 8 files changed, 151 insertions(+), 85 deletions(-) create mode 100644 lib/telemetry-http-rs/src/propagation.rs diff --git a/Cargo.lock b/Cargo.lock index a42a9a86a4..d884499c16 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -178,7 +178,7 @@ version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dbc1f1a75fd07f0f517322d103211f12d757658e91676def9a2e688774656c60" dependencies = [ - "base64 0.21.6", + "base64 0.21.7", "bytes 1.5.0", "futures", "http", @@ -358,7 +358,7 @@ dependencies = [ "async-trait", "axum-core", "axum-macros", - "base64 0.21.6", + "base64 0.21.7", "bitflags 1.3.2", "bytes 1.5.0", "futures-util", @@ -444,9 +444,9 @@ checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" [[package]] name = "base64" -version = "0.21.6" +version = "0.21.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c79fed4cdb43e993fcdadc7e58a09fd0e3e649c4436fa11da71c9f1f3ee7feb9" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" [[package]] name = "base64ct" @@ -537,7 +537,7 @@ version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f03db470b3c0213c47e978da93200259a1eb4dae2e5512cba9955e2b540a6fc6" dependencies = [ - "base64 0.21.6", + "base64 0.21.7", "bollard-stubs", "bytes 1.5.0", "futures-core", @@ -761,9 +761,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.4.14" +version = "4.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33e92c5c1a78c62968ec57dbc2440366a2d6e5a23faf829970ff1585dc6b18e2" +checksum = "c12ed66a79a555082f595f7eb980d08669de95009dd4b3d61168c573ebe38fc9" dependencies = [ "clap_builder", "clap_derive", @@ -771,9 +771,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.4.14" +version = "4.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4323769dc8a61e2c39ad7dc26f6f2800524691a44d74fe3d1071a5c24db6370" +checksum = "0f4645eab3431e5a8403a96bea02506a8b35d28cd0f0330977dd5d22f9c84f43" dependencies = [ "anstream", "anstyle", @@ -1244,7 +1244,7 @@ name = "cyclone-client" version = "0.1.0" dependencies = [ "async-trait", - "base64 0.21.6", + "base64 0.21.7", "buck2-resources", "cyclone-core", "cyclone-server", @@ -1271,7 +1271,7 @@ dependencies = [ name = "cyclone-core" version = "0.1.0" dependencies = [ - "base64 0.21.6", + "base64 0.21.7", "nix 0.27.1", "remain", "serde", @@ -1291,7 +1291,7 @@ version = "0.1.0" dependencies = [ "async-trait", "axum", - "base64 0.21.6", + "base64 0.21.7", "bytes-lines-codec", "chrono", "cyclone-core", @@ -1321,7 +1321,7 @@ version = "0.1.0" dependencies = [ "async-recursion", "async-trait", - "base64 0.21.6", + "base64 0.21.7", "blake3", "buck2-resources", "chrono", @@ -2912,7 +2912,7 @@ version = "0.1.0" dependencies = [ "auth-api-client", "axum", - "base64 0.21.6", + "base64 0.21.7", "buck2-resources", "chrono", "derive_builder", @@ -3678,7 +3678,7 @@ version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49b6c5ef183cd3ab4ba005f1ca64c21e8bd97ce4699cfea9e8d9a2c4958ca520" dependencies = [ - "base64 0.21.6", + "base64 0.21.7", "byteorder", "bytes 1.5.0", "fallible-iterator", @@ -4075,7 +4075,7 @@ version = "0.11.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "37b1ae8d9ac08420c66222fb9096fc5de435c3c48542bc5336c51892cffafb41" dependencies = [ - "base64 0.21.6", + "base64 0.21.7", "bytes 1.5.0", "encoding_rs", "futures-core", @@ -4202,7 +4202,7 @@ dependencies = [ "async-trait", "aws-creds", "aws-region", - "base64 0.21.6", + "base64 0.21.7", "bytes 1.5.0", "cfg-if", "futures", @@ -4304,7 +4304,7 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" dependencies = [ - "base64 0.21.6", + "base64 0.21.7", ] [[package]] @@ -4313,7 +4313,7 @@ version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "35e4980fa29e4c4b212ffb3db068a564cbf560e51d3944b7c88bd8bf5bec64f4" dependencies = [ - "base64 0.21.6", + "base64 0.21.7", "rustls-pki-types", ] @@ -4397,7 +4397,7 @@ dependencies = [ "async-recursion", "async-trait", "axum", - "base64 0.21.6", + "base64 0.21.7", "buck2-resources", "chrono", "convert_case 0.6.0", @@ -4717,7 +4717,7 @@ version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "64cd236ccc1b7a29e7e2739f27c0b2dd199804abc4290e32f59f3b68d6405c23" dependencies = [ - "base64 0.21.6", + "base64 0.21.7", "chrono", "hex", "indexmap 1.9.3", @@ -4817,7 +4817,7 @@ version = "0.1.0" dependencies = [ "async-trait", "axum", - "base64 0.21.6", + "base64 0.21.7", "color-eyre", "colored", "comfy-table", @@ -4851,7 +4851,7 @@ dependencies = [ name = "si-crypto" version = "0.1.0" dependencies = [ - "base64 0.21.6", + "base64 0.21.7", "ciborium", "remain", "serde", @@ -4886,7 +4886,7 @@ dependencies = [ name = "si-data-pg" version = "0.1.0" dependencies = [ - "base64 0.21.6", + "base64 0.21.7", "bytes 1.5.0", "deadpool", "deadpool-postgres", @@ -4920,7 +4920,7 @@ dependencies = [ name = "si-pkg" version = "0.1.0" dependencies = [ - "base64 0.21.6", + "base64 0.21.7", "chrono", "derive_builder", "object-tree", @@ -5248,7 +5248,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e37195395df71fd068f6e2082247891bc11e3289624bbc776a0cdfa1ca7f1ea4" dependencies = [ "atoi", - "base64 0.21.6", + "base64 0.21.7", "bigdecimal", "bitflags 2.4.1", "byteorder", @@ -5295,7 +5295,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6ac0ac3b7ccd10cc96c7ab29791a7dd236bd94021f31eec7ba3d46a74aa1c24" dependencies = [ "atoi", - "base64 0.21.6", + "base64 0.21.7", "bigdecimal", "bitflags 2.4.1", "byteorder", @@ -5559,10 +5559,12 @@ dependencies = [ name = "telemetry-http" version = "0.1.0" dependencies = [ + "http", "hyper", "remain", "telemetry", "tower-http", + "tracing-opentelemetry", ] [[package]] @@ -5946,7 +5948,7 @@ checksum = "3082666a3a6433f7f511c7192923fa1fe07c69332d3c6a2e6bb040b569199d5a" dependencies = [ "async-trait", "axum", - "base64 0.21.6", + "base64 0.21.7", "bytes 1.5.0", "futures-core", "futures-util", @@ -6290,7 +6292,7 @@ dependencies = [ name = "veritech-client" version = "0.1.0" dependencies = [ - "base64 0.21.6", + "base64 0.21.7", "cyclone-core", "futures", "indoc", diff --git a/lib/telemetry-http-rs/BUCK b/lib/telemetry-http-rs/BUCK index 3b53833b3e..a7bb86e628 100644 --- a/lib/telemetry-http-rs/BUCK +++ b/lib/telemetry-http-rs/BUCK @@ -4,9 +4,11 @@ rust_library( name = "telemetry-http", deps = [ "//lib/telemetry-rs:telemetry", + "//third-party/rust:http", "//third-party/rust:hyper", "//third-party/rust:remain", "//third-party/rust:tower-http", + "//third-party/rust:tracing-opentelemetry", ], srcs = glob(["src/**/*.rs"]), ) diff --git a/lib/telemetry-http-rs/Cargo.toml b/lib/telemetry-http-rs/Cargo.toml index bb7babaf57..de21ffbecb 100644 --- a/lib/telemetry-http-rs/Cargo.toml +++ b/lib/telemetry-http-rs/Cargo.toml @@ -6,7 +6,9 @@ rust-version = "1.64" publish = false [dependencies] +http = { workspace = true } hyper = { workspace = true } remain = { workspace = true } telemetry = { path = "../../lib/telemetry-rs" } tower-http = { workspace = true } +tracing-opentelemetry = { workspace = true } diff --git a/lib/telemetry-http-rs/src/lib.rs b/lib/telemetry-http-rs/src/lib.rs index 3faa7beed3..340bcb398c 100644 --- a/lib/telemetry-http-rs/src/lib.rs +++ b/lib/telemetry-http-rs/src/lib.rs @@ -13,6 +13,8 @@ mod make_span; mod on_response; +mod propagation; pub use make_span::{HttpMakeSpan, NetworkTransport}; pub use on_response::HttpOnResponse; +pub use propagation::{extract_opentelemetry_context, inject_opentelemetry_context}; diff --git a/lib/telemetry-http-rs/src/make_span.rs b/lib/telemetry-http-rs/src/make_span.rs index db2104b5e6..ebc8f56cd1 100644 --- a/lib/telemetry-http-rs/src/make_span.rs +++ b/lib/telemetry-http-rs/src/make_span.rs @@ -1,6 +1,9 @@ use hyper::header::USER_AGENT; use telemetry::prelude::*; use tower_http::trace::MakeSpan; +use tracing_opentelemetry::OpenTelemetrySpanExt; + +use crate::extract_opentelemetry_context; /// An implementation of [`MakeSpan`] to generate [`Span`]s from incoming HTTP requests. #[derive(Clone, Debug)] @@ -255,6 +258,10 @@ impl HttpMakeSpan { ); } + // Extract OpenTelemetry parent span metadata from the request headers (if it exists) and + // associate it with this request span + span.set_parent(extract_opentelemetry_context(request.headers())); + span } } diff --git a/lib/telemetry-http-rs/src/propagation.rs b/lib/telemetry-http-rs/src/propagation.rs new file mode 100644 index 0000000000..acae2c4de5 --- /dev/null +++ b/lib/telemetry-http-rs/src/propagation.rs @@ -0,0 +1,51 @@ +use http::HeaderMap; +use telemetry::opentelemetry::{global, Context}; + +/// Extracts an OpenTelemetry [`Context`] from a [`HeaderMap`]. +pub fn extract_opentelemetry_context(headers: &HeaderMap) -> Context { + let extractor = self::headers::HeaderExtractor(headers); + global::get_text_map_propagator(|propagator| propagator.extract(&extractor)) +} + +/// Injects an OpenTelemetry [`Context`] into a [`HeaderMap`]. +pub fn inject_opentelemetry_context(ctx: &Context, headers: &mut HeaderMap) { + let mut injector = self::headers::HeaderInjector(headers); + global::get_text_map_propagator(|propagator| propagator.inject_context(ctx, &mut injector)); +} + +// Implementation vendored from `opentelemetry-http` crate, released under the Apache 2.0 license +// +// https://github.com/open-telemetry/opentelemetry-rust/blob/47881b20a2b8e94d8e1cdbd4877852dd74cc07de/opentelemetry-http/src/lib.rs#L13-L41 +mod headers { + use telemetry::opentelemetry::propagation::{Extractor, Injector}; + + pub struct HeaderInjector<'a>(pub &'a mut http::HeaderMap); + + impl<'a> Injector for HeaderInjector<'a> { + /// Set a key and value in the HeaderMap. Does nothing if the key or value are not valid inputs. + fn set(&mut self, key: &str, value: String) { + if let Ok(name) = http::header::HeaderName::from_bytes(key.as_bytes()) { + if let Ok(val) = http::header::HeaderValue::from_str(&value) { + self.0.insert(name, val); + } + } + } + } + + pub struct HeaderExtractor<'a>(pub &'a http::HeaderMap); + + impl<'a> Extractor for HeaderExtractor<'a> { + /// Get a value for a key from the HeaderMap. If the value is not valid ASCII, returns None. + fn get(&self, key: &str) -> Option<&str> { + self.0.get(key).and_then(|value| value.to_str().ok()) + } + + /// Collect all the keys from the HeaderMap. + fn keys(&self) -> Vec<&str> { + self.0 + .keys() + .map(|value| value.as_str()) + .collect::>() + } + } +} diff --git a/third-party/rust/BUCK b/third-party/rust/BUCK index 3b6e7404a2..1400fe3c3f 100644 --- a/third-party/rust/BUCK +++ b/third-party/rust/BUCK @@ -531,7 +531,7 @@ cargo.rust_library( ], visibility = [], deps = [ - ":base64-0.21.6", + ":base64-0.21.7", ":bytes-1.5.0", ":futures-0.3.30", ":http-0.2.11", @@ -868,7 +868,7 @@ cargo.rust_library( ":async-trait-0.1.77", ":axum-core-0.3.4", ":axum-macros-0.3.8", - ":base64-0.21.6", + ":base64-0.21.7", ":bitflags-1.3.2", ":bytes-1.5.0", ":futures-util-0.3.30", @@ -1058,23 +1058,23 @@ cargo.rust_library( alias( name = "base64", - actual = ":base64-0.21.6", + actual = ":base64-0.21.7", visibility = ["PUBLIC"], ) http_archive( - name = "base64-0.21.6.crate", - sha256 = "c79fed4cdb43e993fcdadc7e58a09fd0e3e649c4436fa11da71c9f1f3ee7feb9", - strip_prefix = "base64-0.21.6", - urls = ["https://crates.io/api/v1/crates/base64/0.21.6/download"], + name = "base64-0.21.7.crate", + sha256 = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567", + strip_prefix = "base64-0.21.7", + urls = ["https://crates.io/api/v1/crates/base64/0.21.7/download"], visibility = [], ) cargo.rust_library( - name = "base64-0.21.6", - srcs = [":base64-0.21.6.crate"], + name = "base64-0.21.7", + srcs = [":base64-0.21.7.crate"], crate = "base64", - crate_root = "base64-0.21.6.crate/src/lib.rs", + crate_root = "base64-0.21.7.crate/src/lib.rs", edition = "2018", features = [ "alloc", @@ -1463,7 +1463,7 @@ cargo.rust_library( }, visibility = [], deps = [ - ":base64-0.21.6", + ":base64-0.21.7", ":bollard-stubs-1.43.0-rc.2", ":bytes-1.5.0", ":futures-core-0.3.30", @@ -1840,23 +1840,23 @@ cargo.rust_library( alias( name = "clap", - actual = ":clap-4.4.14", + actual = ":clap-4.4.15", visibility = ["PUBLIC"], ) http_archive( - name = "clap-4.4.14.crate", - sha256 = "33e92c5c1a78c62968ec57dbc2440366a2d6e5a23faf829970ff1585dc6b18e2", - strip_prefix = "clap-4.4.14", - urls = ["https://crates.io/api/v1/crates/clap/4.4.14/download"], + name = "clap-4.4.15.crate", + sha256 = "c12ed66a79a555082f595f7eb980d08669de95009dd4b3d61168c573ebe38fc9", + strip_prefix = "clap-4.4.15", + urls = ["https://crates.io/api/v1/crates/clap/4.4.15/download"], visibility = [], ) cargo.rust_library( - name = "clap-4.4.14", - srcs = [":clap-4.4.14.crate"], + name = "clap-4.4.15", + srcs = [":clap-4.4.15.crate"], crate = "clap", - crate_root = "clap-4.4.14.crate/src/lib.rs", + crate_root = "clap-4.4.15.crate/src/lib.rs", edition = "2021", features = [ "color", @@ -1872,24 +1872,24 @@ cargo.rust_library( ], visibility = [], deps = [ - ":clap_builder-4.4.14", + ":clap_builder-4.4.15", ":clap_derive-4.4.7", ], ) http_archive( - name = "clap_builder-4.4.14.crate", - sha256 = "f4323769dc8a61e2c39ad7dc26f6f2800524691a44d74fe3d1071a5c24db6370", - strip_prefix = "clap_builder-4.4.14", - urls = ["https://crates.io/api/v1/crates/clap_builder/4.4.14/download"], + name = "clap_builder-4.4.15.crate", + sha256 = "0f4645eab3431e5a8403a96bea02506a8b35d28cd0f0330977dd5d22f9c84f43", + strip_prefix = "clap_builder-4.4.15", + urls = ["https://crates.io/api/v1/crates/clap_builder/4.4.15/download"], visibility = [], ) cargo.rust_library( - name = "clap_builder-4.4.14", - srcs = [":clap_builder-4.4.14.crate"], + name = "clap_builder-4.4.15", + srcs = [":clap_builder-4.4.15.crate"], crate = "clap_builder", - crate_root = "clap_builder-4.4.14.crate/src/lib.rs", + crate_root = "clap_builder-4.4.15.crate/src/lib.rs", edition = "2021", features = [ "color", @@ -9149,7 +9149,7 @@ cargo.rust_library( features = ["default"], visibility = [], deps = [ - ":base64-0.21.6", + ":base64-0.21.7", ":byteorder-1.5.0", ":bytes-1.5.0", ":fallible-iterator-0.2.0", @@ -10242,7 +10242,7 @@ cargo.rust_library( }, visibility = [], deps = [ - ":base64-0.21.6", + ":base64-0.21.7", ":bytes-1.5.0", ":futures-core-0.3.30", ":futures-util-0.3.30", @@ -11089,7 +11089,7 @@ cargo.rust_library( ":async-trait-0.1.77", ":aws-creds-0.36.0", ":aws-region-0.25.4", - ":base64-0.21.6", + ":base64-0.21.7", ":bytes-1.5.0", ":cfg-if-1.0.0", ":futures-0.3.30", @@ -11404,7 +11404,7 @@ cargo.rust_library( crate_root = "rustls-pemfile-1.0.4.crate/src/lib.rs", edition = "2018", visibility = [], - deps = [":base64-0.21.6"], + deps = [":base64-0.21.7"], ) alias( @@ -11435,7 +11435,7 @@ cargo.rust_library( "pki_types": ":rustls-pki-types-1.1.0", }, visibility = [], - deps = [":base64-0.21.6"], + deps = [":base64-0.21.7"], ) http_archive( @@ -12313,7 +12313,7 @@ cargo.rust_library( }, visibility = [], deps = [ - ":base64-0.21.6", + ":base64-0.21.7", ":hex-0.4.3", ":serde-1.0.195", ":serde_json-1.0.111", @@ -13075,7 +13075,7 @@ cargo.rust_library( visibility = [], deps = [ ":atoi-2.0.0", - ":base64-0.21.6", + ":base64-0.21.7", ":bigdecimal-0.3.1", ":bitflags-2.4.1", ":byteorder-1.5.0", @@ -13685,13 +13685,13 @@ cargo.rust_binary( ":async-recursion-1.0.5", ":async-trait-0.1.77", ":axum-0.6.20", - ":base64-0.21.6", + ":base64-0.21.7", ":blake3-1.5.0", ":bollard-0.15.0", ":bytes-1.5.0", ":chrono-0.4.31", ":ciborium-0.2.1", - ":clap-4.4.14", + ":clap-4.4.15", ":color-eyre-0.6.2", ":colored-2.1.0", ":comfy-table-7.1.0", @@ -14682,7 +14682,7 @@ cargo.rust_library( deps = [ ":async-trait-0.1.77", ":axum-0.6.20", - ":base64-0.21.6", + ":base64-0.21.7", ":bytes-1.5.0", ":futures-core-0.3.30", ":futures-util-0.3.30", diff --git a/third-party/rust/Cargo.lock b/third-party/rust/Cargo.lock index 610c865734..2c264df450 100644 --- a/third-party/rust/Cargo.lock +++ b/third-party/rust/Cargo.lock @@ -178,7 +178,7 @@ version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dbc1f1a75fd07f0f517322d103211f12d757658e91676def9a2e688774656c60" dependencies = [ - "base64 0.21.6", + "base64 0.21.7", "bytes 1.5.0", "futures", "http", @@ -342,7 +342,7 @@ dependencies = [ "async-trait", "axum-core", "axum-macros", - "base64 0.21.6", + "base64 0.21.7", "bitflags 1.3.2", "bytes 1.5.0", "futures-util", @@ -428,9 +428,9 @@ checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" [[package]] name = "base64" -version = "0.21.6" +version = "0.21.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c79fed4cdb43e993fcdadc7e58a09fd0e3e649c4436fa11da71c9f1f3ee7feb9" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" [[package]] name = "base64ct" @@ -521,7 +521,7 @@ version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f03db470b3c0213c47e978da93200259a1eb4dae2e5512cba9955e2b540a6fc6" dependencies = [ - "base64 0.21.6", + "base64 0.21.7", "bollard-stubs", "bytes 1.5.0", "futures-core", @@ -724,9 +724,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.4.14" +version = "4.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33e92c5c1a78c62968ec57dbc2440366a2d6e5a23faf829970ff1585dc6b18e2" +checksum = "c12ed66a79a555082f595f7eb980d08669de95009dd4b3d61168c573ebe38fc9" dependencies = [ "clap_builder", "clap_derive", @@ -734,9 +734,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.4.14" +version = "4.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4323769dc8a61e2c39ad7dc26f6f2800524691a44d74fe3d1071a5c24db6370" +checksum = "0f4645eab3431e5a8403a96bea02506a8b35d28cd0f0330977dd5d22f9c84f43" dependencies = [ "anstream", "anstyle", @@ -3249,7 +3249,7 @@ version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49b6c5ef183cd3ab4ba005f1ca64c21e8bd97ce4699cfea9e8d9a2c4958ca520" dependencies = [ - "base64 0.21.6", + "base64 0.21.7", "byteorder", "bytes 1.5.0", "fallible-iterator", @@ -3646,7 +3646,7 @@ version = "0.11.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "37b1ae8d9ac08420c66222fb9096fc5de435c3c48542bc5336c51892cffafb41" dependencies = [ - "base64 0.21.6", + "base64 0.21.7", "bytes 1.5.0", "encoding_rs", "futures-core", @@ -3773,7 +3773,7 @@ dependencies = [ "async-trait", "aws-creds", "aws-region", - "base64 0.21.6", + "base64 0.21.7", "bytes 1.5.0", "cfg-if", "futures", @@ -3875,7 +3875,7 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" dependencies = [ - "base64 0.21.6", + "base64 0.21.7", ] [[package]] @@ -3884,7 +3884,7 @@ version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "35e4980fa29e4c4b212ffb3db068a564cbf560e51d3944b7c88bd8bf5bec64f4" dependencies = [ - "base64 0.21.6", + "base64 0.21.7", "rustls-pki-types", ] @@ -4224,7 +4224,7 @@ version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "64cd236ccc1b7a29e7e2739f27c0b2dd199804abc4290e32f59f3b68d6405c23" dependencies = [ - "base64 0.21.6", + "base64 0.21.7", "chrono", "hex", "indexmap 1.9.3", @@ -4569,7 +4569,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e37195395df71fd068f6e2082247891bc11e3289624bbc776a0cdfa1ca7f1ea4" dependencies = [ "atoi", - "base64 0.21.6", + "base64 0.21.7", "bigdecimal", "bitflags 2.4.1", "byteorder", @@ -4616,7 +4616,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6ac0ac3b7ccd10cc96c7ab29791a7dd236bd94021f31eec7ba3d46a74aa1c24" dependencies = [ "atoi", - "base64 0.21.6", + "base64 0.21.7", "bigdecimal", "bitflags 2.4.1", "byteorder", @@ -4900,7 +4900,7 @@ dependencies = [ "async-recursion", "async-trait", "axum", - "base64 0.21.6", + "base64 0.21.7", "blake3", "bollard", "bytes 1.5.0", @@ -5343,7 +5343,7 @@ checksum = "3082666a3a6433f7f511c7192923fa1fe07c69332d3c6a2e6bb040b569199d5a" dependencies = [ "async-trait", "axum", - "base64 0.21.6", + "base64 0.21.7", "bytes 1.5.0", "futures-core", "futures-util",