diff --git a/.github/workflows/general.yml b/.github/workflows/general.yml index 6d4b69eeb..a2be635fd 100644 --- a/.github/workflows/general.yml +++ b/.github/workflows/general.yml @@ -54,6 +54,7 @@ jobs: - opentelemetry_0_16 - opentelemetry_0_17 - opentelemetry_0_18 + - opentelemetry_0_19 steps: - uses: actions/checkout@v2 - name: Cache dependencies diff --git a/Cargo.toml b/Cargo.toml index 9e808eac7..e8679c6bb 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,7 +3,7 @@ members = [".", "examples/opentelemetry", "examples/custom-root-span"] [package] name = "tracing-actix-web" -version = "0.7.4" +version = "0.7.5" authors = ["Luca Palmieri "] edition = "2018" @@ -26,6 +26,7 @@ opentelemetry_0_15 = ["opentelemetry_0_15_pkg", "tracing-opentelemetry_0_14_pkg" opentelemetry_0_16 = ["opentelemetry_0_16_pkg", "tracing-opentelemetry_0_16_pkg"] opentelemetry_0_17 = ["opentelemetry_0_17_pkg", "tracing-opentelemetry_0_17_pkg"] opentelemetry_0_18 = ["opentelemetry_0_18_pkg", "tracing-opentelemetry_0_18_pkg"] +opentelemetry_0_19 = ["opentelemetry_0_19_pkg", "tracing-opentelemetry_0_19_pkg"] emit_event_on_error = [] [dependencies] @@ -39,12 +40,14 @@ opentelemetry_0_15_pkg = { package = "opentelemetry", version = "0.15", optional opentelemetry_0_16_pkg = { package = "opentelemetry", version = "0.16", optional = true } opentelemetry_0_17_pkg = { package = "opentelemetry", version = "0.17", optional = true } opentelemetry_0_18_pkg = { package = "opentelemetry", version = "0.18", optional = true } +opentelemetry_0_19_pkg = { package = "opentelemetry", version = "0.19", 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 } tracing-opentelemetry_0_16_pkg = { package = "tracing-opentelemetry",version = "0.16", optional = true } tracing-opentelemetry_0_17_pkg = { package = "tracing-opentelemetry",version = "0.17", optional = true } tracing-opentelemetry_0_18_pkg = { package = "tracing-opentelemetry",version = "0.18", optional = true } +tracing-opentelemetry_0_19_pkg = { package = "tracing-opentelemetry",version = "0.19", optional = true } [dev-dependencies] actix-web = { version = "4", default-features = false, features = ["macros"] } diff --git a/README.md b/README.md index 63e68f320..73b3f9083 100644 --- a/README.md +++ b/README.md @@ -52,6 +52,7 @@ actix-web = "4" - `opentelemetry_0_16`: same as above but using `opentelemetry` 0.16; - `opentelemetry_0_17`: same as above but using `opentelemetry` 0.17; - `opentelemetry_0_18`: same as above but using `opentelemetry` 0.18; +- `opentelemetry_0_19`: same as above but using `opentelemetry` 0.19; - `emit_event_on_error`: emit a [`tracing`] event when request processing fails with an error (enabled by default). ## Quickstart diff --git a/examples/custom-root-span/Cargo.toml b/examples/custom-root-span/Cargo.toml index c610726c3..e5fcfb106 100644 --- a/examples/custom-root-span/Cargo.toml +++ b/examples/custom-root-span/Cargo.toml @@ -8,9 +8,9 @@ edition = "2018" [dependencies] actix-web = "4" -opentelemetry = { version = "0.17", features = ["rt-tokio-current-thread"] } -opentelemetry-jaeger = { version = "0.16", features = ["rt-tokio-current-thread"] } -tracing-opentelemetry = { version = "0.17" } +opentelemetry = { version = "0.19", features = ["rt-tokio-current-thread"] } +opentelemetry-jaeger = { version = "0.18", features = ["rt-tokio-current-thread"] } +tracing-opentelemetry = { version = "0.19" } tracing = "0.1.19" tracing-subscriber = { version = "0.3", features = ["registry", "env-filter"] } tracing-bunyan-formatter = "0.3" diff --git a/examples/custom-root-span/src/main.rs b/examples/custom-root-span/src/main.rs index e3d68be2a..7930ef054 100644 --- a/examples/custom-root-span/src/main.rs +++ b/examples/custom-root-span/src/main.rs @@ -76,7 +76,7 @@ fn init_telemetry() { let app_name = "tracing-actix-web-demo"; global::set_text_map_propagator(TraceContextPropagator::new()); - let tracer = opentelemetry_jaeger::new_pipeline() + let tracer = opentelemetry_jaeger::new_agent_pipeline() .with_service_name(app_name) .install_batch(TokioCurrentThread) .expect("Failed to install OpenTelemetry tracer."); diff --git a/examples/opentelemetry/Cargo.toml b/examples/opentelemetry/Cargo.toml index 5f1f5fc0c..9ee3c68c5 100644 --- a/examples/opentelemetry/Cargo.toml +++ b/examples/opentelemetry/Cargo.toml @@ -9,9 +9,9 @@ license = "MIT/Apache-2.0" [dependencies] actix-web = "4" tracing = "0.1.19" -opentelemetry = { version = "0.17", features = ["rt-tokio-current-thread"] } -opentelemetry-jaeger = { version = "0.16", features = ["rt-tokio-current-thread"] } -tracing-opentelemetry = { version = "0.17" } +opentelemetry = { version = "0.19", features = ["rt-tokio-current-thread"] } +opentelemetry-jaeger = { version = "0.18", features = ["rt-tokio-current-thread"] } +tracing-opentelemetry = { version = "0.19" } tracing-subscriber = { version = "0.3", features = ["registry", "env-filter"] } tracing-bunyan-formatter = "0.3" -tracing-actix-web = { path = "../..", features = ["opentelemetry_0_17"] } +tracing-actix-web = { path = "../..", features = ["opentelemetry_0_19"] } diff --git a/examples/opentelemetry/src/main.rs b/examples/opentelemetry/src/main.rs index e1cdc684d..ac56ff8f3 100644 --- a/examples/opentelemetry/src/main.rs +++ b/examples/opentelemetry/src/main.rs @@ -18,7 +18,7 @@ fn init_telemetry() { // Start a new Jaeger trace pipeline. // Spans are exported in batch - recommended setup for a production application. global::set_text_map_propagator(TraceContextPropagator::new()); - let tracer = opentelemetry_jaeger::new_pipeline() + let tracer = opentelemetry_jaeger::new_agent_pipeline() .with_service_name(app_name) .install_batch(TokioCurrentThread) .expect("Failed to install OpenTelemetry tracer."); diff --git a/src/lib.rs b/src/lib.rs index 5fa67d833..39b6ac006 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -25,6 +25,7 @@ //! - `opentelemetry_0_16`: same as above but using `opentelemetry` 0.16; //! - `opentelemetry_0_17`: same as above but using `opentelemetry` 0.17; //! - `opentelemetry_0_18`: same as above but using `opentelemetry` 0.18; +//! - `opentelemetry_0_19`: same as above but using `opentelemetry` 0.19; //! - `emit_event_on_error`: emit a [`tracing`] event when request processing fails with an error (enabled by default). //! //! ## Quickstart @@ -291,7 +292,8 @@ pub mod root_span_macro; feature = "opentelemetry_0_15", feature = "opentelemetry_0_16", feature = "opentelemetry_0_17", - feature = "opentelemetry_0_18" + feature = "opentelemetry_0_18", + feature = "opentelemetry_0_19" ))] mod otel; @@ -310,6 +312,9 @@ compile_error!("feature \"opentelemetry_0_13\" and feature \"opentelemetry_0_17\ #[cfg(all(feature = "opentelemetry_0_13", feature = "opentelemetry_0_18"))] compile_error!("feature \"opentelemetry_0_13\" and feature \"opentelemetry_0_18\" cannot be enabled at the same time"); +#[cfg(all(feature = "opentelemetry_0_13", feature = "opentelemetry_0_19"))] +compile_error!("feature \"opentelemetry_0_13\" and feature \"opentelemetry_0_19\" cannot be enabled at the same time"); + #[cfg(all(feature = "opentelemetry_0_14", feature = "opentelemetry_0_15"))] compile_error!("feature \"opentelemetry_0_14\" and feature \"opentelemetry_0_15\" cannot be enabled at the same time"); @@ -322,6 +327,9 @@ compile_error!("feature \"opentelemetry_0_14\" and feature \"opentelemetry_0_17\ #[cfg(all(feature = "opentelemetry_0_14", feature = "opentelemetry_0_18"))] compile_error!("feature \"opentelemetry_0_14\" and feature \"opentelemetry_0_18\" cannot be enabled at the same time"); +#[cfg(all(feature = "opentelemetry_0_14", feature = "opentelemetry_0_19"))] +compile_error!("feature \"opentelemetry_0_14\" and feature \"opentelemetry_0_19\" cannot be enabled at the same time"); + #[cfg(all(feature = "opentelemetry_0_15", feature = "opentelemetry_0_16"))] compile_error!("feature \"opentelemetry_0_15\" and feature \"opentelemetry_0_16\" cannot be enabled at the same time"); @@ -331,11 +339,23 @@ compile_error!("feature \"opentelemetry_0_15\" and feature \"opentelemetry_0_17\ #[cfg(all(feature = "opentelemetry_0_15", feature = "opentelemetry_0_18"))] compile_error!("feature \"opentelemetry_0_15\" and feature \"opentelemetry_0_18\" cannot be enabled at the same time"); +#[cfg(all(feature = "opentelemetry_0_15", feature = "opentelemetry_0_19"))] +compile_error!("feature \"opentelemetry_0_15\" and feature \"opentelemetry_0_19\" cannot be enabled at the same time"); + #[cfg(all(feature = "opentelemetry_0_16", feature = "opentelemetry_0_17"))] compile_error!("feature \"opentelemetry_0_16\" and feature \"opentelemetry_0_17\" cannot be enabled at the same time"); #[cfg(all(feature = "opentelemetry_0_16", feature = "opentelemetry_0_18"))] compile_error!("feature \"opentelemetry_0_16\" and feature \"opentelemetry_0_18\" cannot be enabled at the same time"); +#[cfg(all(feature = "opentelemetry_0_16", feature = "opentelemetry_0_19"))] +compile_error!("feature \"opentelemetry_0_16\" and feature \"opentelemetry_0_19\" cannot be enabled at the same time"); + #[cfg(all(feature = "opentelemetry_0_17", feature = "opentelemetry_0_18"))] compile_error!("feature \"opentelemetry_0_17\" and feature \"opentelemetry_0_18\" cannot be enabled at the same time"); + +#[cfg(all(feature = "opentelemetry_0_17", feature = "opentelemetry_0_19"))] +compile_error!("feature \"opentelemetry_0_17\" and feature \"opentelemetry_0_19\" cannot be enabled at the same time"); + +#[cfg(all(feature = "opentelemetry_0_18", feature = "opentelemetry_0_19"))] +compile_error!("feature \"opentelemetry_0_18\" and feature \"opentelemetry_0_19\" cannot be enabled at the same time"); diff --git a/src/otel.rs b/src/otel.rs index ec5e8d168..0dc599545 100644 --- a/src/otel.rs +++ b/src/otel.rs @@ -12,6 +12,8 @@ use opentelemetry_0_16_pkg as opentelemetry; use opentelemetry_0_17_pkg as opentelemetry; #[cfg(feature = "opentelemetry_0_18")] use opentelemetry_0_18_pkg as opentelemetry; +#[cfg(feature = "opentelemetry_0_19")] +use opentelemetry_0_19_pkg as opentelemetry; #[cfg(feature = "opentelemetry_0_13")] use tracing_opentelemetry_0_12_pkg as tracing_opentelemetry; @@ -25,6 +27,8 @@ use tracing_opentelemetry_0_16_pkg as tracing_opentelemetry; use tracing_opentelemetry_0_17_pkg as tracing_opentelemetry; #[cfg(feature = "opentelemetry_0_18")] use tracing_opentelemetry_0_18_pkg as tracing_opentelemetry; +#[cfg(feature = "opentelemetry_0_19")] +use tracing_opentelemetry_0_19_pkg as tracing_opentelemetry; use opentelemetry::propagation::Extractor; @@ -58,10 +62,18 @@ pub(crate) fn set_otel_parent(req: &ServiceRequest, span: &tracing::Span) { span.set_parent(parent_context); // If we have a remote parent span, this will be the parent's trace identifier. // If not, it will be the newly generated trace identifier with this request as root span. - #[cfg(not(any(feature = "opentelemetry_0_17", feature = "opentelemetry_0_18")))] + #[cfg(not(any( + feature = "opentelemetry_0_17", + feature = "opentelemetry_0_18", + feature = "opentelemetry_0_19" + )))] let trace_id = span.context().span().span_context().trace_id().to_hex(); - #[cfg(any(feature = "opentelemetry_0_17", feature = "opentelemetry_0_18"))] + #[cfg(any( + feature = "opentelemetry_0_17", + feature = "opentelemetry_0_18", + feature = "opentelemetry_0_19" + ))] let trace_id = { let id = span.context().span().span_context().trace_id(); format!("{:032x}", id) diff --git a/src/root_span_macro.rs b/src/root_span_macro.rs index 95aee3929..c1c191be5 100644 --- a/src/root_span_macro.rs +++ b/src/root_span_macro.rs @@ -161,7 +161,8 @@ pub mod private { feature = "opentelemetry_0_15", feature = "opentelemetry_0_16", feature = "opentelemetry_0_17", - feature = "opentelemetry_0_18" + feature = "opentelemetry_0_18", + feature = "opentelemetry_0_19" ))] crate::otel::set_otel_parent(req, span); }