From eae6709b7b9966bbffdf9074a43df728b22d6c80 Mon Sep 17 00:00:00 2001 From: Alessandro Campeis <12007735+campeis@users.noreply.github.com> Date: Wed, 11 Jun 2025 14:13:00 +0200 Subject: [PATCH 1/2] feat: support opentelemetry 0.30 --- 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 848ea88..27c626a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -93,6 +93,10 @@ opentelemetry_0_29 = [ "opentelemetry_0_29_pkg", "tracing-opentelemetry_0_30_pkg", ] +opentelemetry_0_30 = [ + "opentelemetry_0_30_pkg", + "tracing-opentelemetry_0_31_pkg", +] emit_event_on_error = [] uuid_v7 = ["uuid/v7"] @@ -119,6 +123,7 @@ opentelemetry_0_26_pkg = { package = "opentelemetry", version = "0.26", optional 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 } +opentelemetry_0_30_pkg = { package = "opentelemetry", version = "0.30", 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 } @@ -136,6 +141,7 @@ tracing-opentelemetry_0_27_pkg = { package = "tracing-opentelemetry", version = 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 } +tracing-opentelemetry_0_31_pkg = { package = "tracing-opentelemetry", version = "0.31", optional = true } [dev-dependencies] actix-web = { version = "4", default-features = false, features = ["macros"] } diff --git a/README.md b/README.md index 1a9079f..b5e3b85 100644 --- a/README.md +++ b/README.md @@ -63,6 +63,7 @@ actix-web = "4" - `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; +- `opentelemetry_0_30`: same as above but using `opentelemetry` 0.30; - `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 6954b15..99df674 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.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" +opentelemetry = "0.30" +opentelemetry-otlp = { version = "0.30", features = ["grpc-tonic"] } +opentelemetry_sdk = { version = "0.30", features = ["rt-tokio-current-thread"] } +opentelemetry-semantic-conventions = "0.30" +tracing-opentelemetry = "0.31" tracing = "0.1" -tracing-actix-web = { path = "../..", features = ["opentelemetry_0_29"] } +tracing-actix-web = { path = "../..", features = ["opentelemetry_0_30"] } 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 e901fbb..e81ab03 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.29" -opentelemetry-otlp = { version = "0.29", features = ["grpc-tonic"] } -opentelemetry_sdk = { version = "0.29", features = ["rt-tokio-current-thread"] } -opentelemetry-semantic-conventions = "0.29" +opentelemetry = "0.30" +opentelemetry-otlp = { version = "0.30", features = ["grpc-tonic"] } +opentelemetry_sdk = { version = "0.30", features = ["rt-tokio-current-thread"] } +opentelemetry-semantic-conventions = "0.30" tracing = "0.1" -tracing-actix-web = { path = "../..", features = ["opentelemetry_0_29"] } +tracing-actix-web = { path = "../..", features = ["opentelemetry_0_30"] } tracing-bunyan-formatter = "0.3" -tracing-opentelemetry = "0.30" +tracing-opentelemetry = "0.31" tracing-subscriber = { version = "0.3", features = ["registry", "env-filter"] } diff --git a/src/lib.rs b/src/lib.rs index d9e26a7..ef77f0c 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -36,6 +36,7 @@ //! - `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; +//! - `opentelemetry_0_30`: same as above but using `opentelemetry` 0.30; //! - `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). //! @@ -317,6 +318,7 @@ mutually_exclusive_features::none_or_one_of!( "opentelemetry_0_27", "opentelemetry_0_28", "opentelemetry_0_29", + "opentelemetry_0_30", ); #[cfg(any( @@ -337,5 +339,6 @@ mutually_exclusive_features::none_or_one_of!( feature = "opentelemetry_0_27", feature = "opentelemetry_0_28", feature = "opentelemetry_0_29", + feature = "opentelemetry_0_30", ))] mod otel; diff --git a/src/otel.rs b/src/otel.rs index 5f3d35e..d82572d 100644 --- a/src/otel.rs +++ b/src/otel.rs @@ -34,6 +34,8 @@ use opentelemetry_0_27_pkg as opentelemetry; use opentelemetry_0_28_pkg as opentelemetry; #[cfg(feature = "opentelemetry_0_29")] use opentelemetry_0_29_pkg as opentelemetry; +#[cfg(feature = "opentelemetry_0_30")] +use opentelemetry_0_30_pkg as opentelemetry; #[cfg(feature = "opentelemetry_0_13")] use tracing_opentelemetry_0_12_pkg as tracing_opentelemetry; @@ -69,6 +71,8 @@ use tracing_opentelemetry_0_28_pkg as tracing_opentelemetry; use tracing_opentelemetry_0_29_pkg as tracing_opentelemetry; #[cfg(feature = "opentelemetry_0_29")] use tracing_opentelemetry_0_30_pkg as tracing_opentelemetry; +#[cfg(feature = "opentelemetry_0_30")] +use tracing_opentelemetry_0_31_pkg as tracing_opentelemetry; use opentelemetry::propagation::Extractor; @@ -116,6 +120,7 @@ pub(crate) fn set_otel_parent(req: &ServiceRequest, span: &tracing::Span) { feature = "opentelemetry_0_27", feature = "opentelemetry_0_28", feature = "opentelemetry_0_29", + feature = "opentelemetry_0_30", )))] let trace_id = span.context().span().span_context().trace_id().to_hex(); @@ -133,6 +138,7 @@ pub(crate) fn set_otel_parent(req: &ServiceRequest, span: &tracing::Span) { feature = "opentelemetry_0_27", feature = "opentelemetry_0_28", feature = "opentelemetry_0_29", + feature = "opentelemetry_0_30", ))] 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 dd53cdc..53469d5 100644 --- a/src/root_span_macro.rs +++ b/src/root_span_macro.rs @@ -173,6 +173,7 @@ pub mod private { feature = "opentelemetry_0_27", feature = "opentelemetry_0_28", feature = "opentelemetry_0_29", + feature = "opentelemetry_0_30", ))] crate::otel::set_otel_parent(req, span); } From 73065a7061b951530544f54741fb8b3d86f00588 Mon Sep 17 00:00:00 2001 From: Alessandro Campeis <12007735+campeis@users.noreply.github.com> Date: Wed, 11 Jun 2025 14:19:52 +0200 Subject: [PATCH 2/2] chore: add tests for latest opentelemetry versions to CI --- .github/workflows/general.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/general.yml b/.github/workflows/general.yml index e563665..197345b 100644 --- a/.github/workflows/general.yml +++ b/.github/workflows/general.yml @@ -44,6 +44,9 @@ jobs: - opentelemetry_0_25 - opentelemetry_0_26 - opentelemetry_0_27 + - opentelemetry_0_28 + - opentelemetry_0_29 + - opentelemetry_0_30 steps: - uses: actions/checkout@v4 - name: Install Rust