From f30c1e11df00f6eea081f3fcd8e8d632d351c9de Mon Sep 17 00:00:00 2001 From: Alessandro Campeis <12007735+campeis@users.noreply.github.com> Date: Mon, 24 Mar 2025 08:20:51 +0100 Subject: [PATCH 1/2] chore: update to otel 0.29 --- Cargo.toml | 6 ++++++ README.md | 1 + examples/custom-root-span/Cargo.toml | 12 ++++++------ examples/opentelemetry/Cargo.toml | 12 ++++++------ src/lib.rs | 3 +++ src/otel.rs | 6 ++++++ src/root_span_macro.rs | 1 + 7 files changed, 29 insertions(+), 12 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 98705b1..9a71bef 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -89,6 +89,10 @@ opentelemetry_0_28 = [ "opentelemetry_0_28_pkg", "tracing-opentelemetry_0_29_pkg", ] +opentelemetry_0_29 = [ + "opentelemetry_0_29_pkg", + "tracing-opentelemetry_0_30_pkg", +] emit_event_on_error = [] uuid_v7 = ["uuid/v7"] @@ -114,6 +118,7 @@ opentelemetry_0_25_pkg = { package = "opentelemetry", version = "0.25", optional opentelemetry_0_26_pkg = { package = "opentelemetry", version = "0.26", optional = true } opentelemetry_0_27_pkg = { package = "opentelemetry", version = "0.27", optional = true } opentelemetry_0_28_pkg = { package = "opentelemetry", version = "0.28", optional = true } +opentelemetry_0_29_pkg = { package = "opentelemetry", version = "0.29", optional = true } tracing-opentelemetry_0_12_pkg = { package = "tracing-opentelemetry", version = "0.12", optional = true } tracing-opentelemetry_0_13_pkg = { package = "tracing-opentelemetry", version = "0.13", optional = true } tracing-opentelemetry_0_14_pkg = { package = "tracing-opentelemetry", version = "0.14", optional = true } @@ -130,6 +135,7 @@ tracing-opentelemetry_0_26_pkg = { package = "tracing-opentelemetry", version = tracing-opentelemetry_0_27_pkg = { package = "tracing-opentelemetry", version = "0.27", optional = true } tracing-opentelemetry_0_28_pkg = { package = "tracing-opentelemetry", version = "0.28", optional = true } tracing-opentelemetry_0_29_pkg = { package = "tracing-opentelemetry", version = "0.29", optional = true } +tracing-opentelemetry_0_30_pkg = { package = "tracing-opentelemetry", version = "0.30", optional = true } [dev-dependencies] actix-web = { version = "4", default-features = false, features = ["macros"] } diff --git a/README.md b/README.md index 1592f08..1a9079f 100644 --- a/README.md +++ b/README.md @@ -62,6 +62,7 @@ actix-web = "4" - `opentelemetry_0_26`: same as above but using `opentelemetry` 0.26; - `opentelemetry_0_27`: same as above but using `opentelemetry` 0.27; - `opentelemetry_0_28`: same as above but using `opentelemetry` 0.28; +- `opentelemetry_0_29`: same as above but using `opentelemetry` 0.29; - `emit_event_on_error`: emit a [`tracing`] event when request processing fails with an error (enabled by default). - `uuid_v7`: use the UUID v7 implementation inside [`RequestId`] instead of UUID v4 (disabled by default). ## Quickstart diff --git a/examples/custom-root-span/Cargo.toml b/examples/custom-root-span/Cargo.toml index dde9bac..6954b15 100644 --- a/examples/custom-root-span/Cargo.toml +++ b/examples/custom-root-span/Cargo.toml @@ -8,12 +8,12 @@ edition = "2021" [dependencies] actix-web = "4" -opentelemetry = "0.28" -opentelemetry-otlp = { version = "0.28", features = ["grpc-tonic"] } -opentelemetry_sdk = { version = "0.28", features = ["rt-tokio-current-thread"] } -opentelemetry-semantic-conventions = "0.28" -tracing-opentelemetry = "0.29" +opentelemetry = "0.29" +opentelemetry-otlp = { version = "0.29", features = ["grpc-tonic"] } +opentelemetry_sdk = { version = "0.29", features = ["rt-tokio-current-thread"] } +opentelemetry-semantic-conventions = "0.29" +tracing-opentelemetry = "0.30" tracing = "0.1" -tracing-actix-web = { path = "../..", features = ["opentelemetry_0_28"] } +tracing-actix-web = { path = "../..", features = ["opentelemetry_0_29"] } tracing-bunyan-formatter = "0.3" tracing-subscriber = { version = "0.3", features = ["registry", "env-filter"] } diff --git a/examples/opentelemetry/Cargo.toml b/examples/opentelemetry/Cargo.toml index 91b38ee..e901fbb 100644 --- a/examples/opentelemetry/Cargo.toml +++ b/examples/opentelemetry/Cargo.toml @@ -8,12 +8,12 @@ license = "MIT/Apache-2.0" [dependencies] actix-web = "4" -opentelemetry = "0.28" -opentelemetry-otlp = { version = "0.28", features = ["grpc-tonic"] } -opentelemetry_sdk = { version = "0.28", features = ["rt-tokio-current-thread"] } -opentelemetry-semantic-conventions = "0.28" +opentelemetry = "0.29" +opentelemetry-otlp = { version = "0.29", features = ["grpc-tonic"] } +opentelemetry_sdk = { version = "0.29", features = ["rt-tokio-current-thread"] } +opentelemetry-semantic-conventions = "0.29" tracing = "0.1" -tracing-actix-web = { path = "../..", features = ["opentelemetry_0_28"] } +tracing-actix-web = { path = "../..", features = ["opentelemetry_0_29"] } tracing-bunyan-formatter = "0.3" -tracing-opentelemetry = "0.29" +tracing-opentelemetry = "0.30" tracing-subscriber = { version = "0.3", features = ["registry", "env-filter"] } diff --git a/src/lib.rs b/src/lib.rs index 9fd6186..d9e26a7 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -35,6 +35,7 @@ //! - `opentelemetry_0_26`: same as above but using `opentelemetry` 0.26; //! - `opentelemetry_0_27`: same as above but using `opentelemetry` 0.27; //! - `opentelemetry_0_28`: same as above but using `opentelemetry` 0.28; +//! - `opentelemetry_0_29`: same as above but using `opentelemetry` 0.29; //! - `emit_event_on_error`: emit a [`tracing`] event when request processing fails with an error (enabled by default). //! - `uuid_v7`: use the UUID v7 implementation inside [`RequestId`] instead of UUID v4 (disabled by default). //! @@ -315,6 +316,7 @@ mutually_exclusive_features::none_or_one_of!( "opentelemetry_0_26", "opentelemetry_0_27", "opentelemetry_0_28", + "opentelemetry_0_29", ); #[cfg(any( @@ -334,5 +336,6 @@ mutually_exclusive_features::none_or_one_of!( feature = "opentelemetry_0_26", feature = "opentelemetry_0_27", feature = "opentelemetry_0_28", + feature = "opentelemetry_0_29", ))] mod otel; diff --git a/src/otel.rs b/src/otel.rs index 1eb28d2..1ac3588 100644 --- a/src/otel.rs +++ b/src/otel.rs @@ -32,6 +32,8 @@ use opentelemetry_0_26_pkg as opentelemetry; use opentelemetry_0_27_pkg as opentelemetry; #[cfg(feature = "opentelemetry_0_28")] use opentelemetry_0_28_pkg as opentelemetry; +#[cfg(feature = "opentelemetry_0_29")] +use opentelemetry_0_29_pkg as opentelemetry; #[cfg(feature = "opentelemetry_0_13")] use tracing_opentelemetry_0_12_pkg as tracing_opentelemetry; @@ -65,6 +67,8 @@ use tracing_opentelemetry_0_27_pkg as tracing_opentelemetry; use tracing_opentelemetry_0_28_pkg as tracing_opentelemetry; #[cfg(feature = "opentelemetry_0_28")] use tracing_opentelemetry_0_29_pkg as tracing_opentelemetry; +#[cfg(feature = "opentelemetry_0_29")] +use tracing_opentelemetry_0_30_pkg as tracing_opentelemetry; use opentelemetry::propagation::Extractor; @@ -111,6 +115,7 @@ pub(crate) fn set_otel_parent(req: &ServiceRequest, span: &tracing::Span) { feature = "opentelemetry_0_26", feature = "opentelemetry_0_27", feature = "opentelemetry_0_28", + feature = "opentelemetry_0_29", )))] let trace_id = span.context().span().span_context().trace_id().to_hex(); @@ -127,6 +132,7 @@ pub(crate) fn set_otel_parent(req: &ServiceRequest, span: &tracing::Span) { feature = "opentelemetry_0_26", feature = "opentelemetry_0_27", feature = "opentelemetry_0_28", + feature = "opentelemetry_0_29", ))] let trace_id = { let id = span.context().span().span_context().trace_id(); diff --git a/src/root_span_macro.rs b/src/root_span_macro.rs index 8477440..dd53cdc 100644 --- a/src/root_span_macro.rs +++ b/src/root_span_macro.rs @@ -172,6 +172,7 @@ pub mod private { feature = "opentelemetry_0_26", feature = "opentelemetry_0_27", feature = "opentelemetry_0_28", + feature = "opentelemetry_0_29", ))] crate::otel::set_otel_parent(req, span); } From f28566f5b1a0e9fef24a7c04acafb5ab7d29d2ce Mon Sep 17 00:00:00 2001 From: Alessandro Campeis <12007735+campeis@users.noreply.github.com> Date: Mon, 24 Mar 2025 08:35:25 +0100 Subject: [PATCH 2/2] lint: clippy fixes --- src/otel.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/otel.rs b/src/otel.rs index 1ac3588..5f3d35e 100644 --- a/src/otel.rs +++ b/src/otel.rs @@ -82,7 +82,7 @@ impl<'a> RequestHeaderCarrier<'a> { } } -impl<'a> Extractor for RequestHeaderCarrier<'a> { +impl Extractor for RequestHeaderCarrier<'_> { fn get(&self, key: &str) -> Option<&str> { self.headers.get(key).and_then(|v| v.to_str().ok()) } @@ -139,5 +139,5 @@ pub(crate) fn set_otel_parent(req: &ServiceRequest, span: &tracing::Span) { format!("{:032x}", id) }; - span.record("trace_id", &tracing::field::display(trace_id)); + span.record("trace_id", tracing::field::display(trace_id)); }