diff --git a/Cargo.toml b/Cargo.toml index 843351c3..050a6bc2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -61,7 +61,7 @@ log = { version = "0.4.14", optional = true } secrecy = { version = "0.7.0", optional = true } tracinglib = { version = "0.1.25", optional = true, package = "tracing" } tracing-futures = { version = "0.2.5", optional = true, features = ["std-future", "futures-03"] } -opentelemetry = { version = "0.16.0", optional = true, default-features = false, features = ["trace"] } +opentelemetry = { version = "0.17.0", optional = true, default-features = false, features = ["trace"] } uuid = { version = "0.8.2", optional = true, features = ["v4", "serde"] } rust_decimal = { version = "1.14.3", optional = true } url = { version = "2.2.1", optional = true } diff --git a/src/extensions/opentelemetry.rs b/src/extensions/opentelemetry.rs index 54ad8056..3ae9e7a9 100644 --- a/src/extensions/opentelemetry.rs +++ b/src/extensions/opentelemetry.rs @@ -31,7 +31,8 @@ impl OpenTelemetry { /// Use `tracer` to create an OpenTelemetry extension. pub fn new(tracer: T) -> OpenTelemetry where - T: Tracer + Send + Sync, + T: Tracer + Send + Sync + 'static, + ::Span: Sync + Send, { Self { tracer: Arc::new(tracer), @@ -39,7 +40,11 @@ impl OpenTelemetry { } } -impl ExtensionFactory for OpenTelemetry { +impl ExtensionFactory for OpenTelemetry +where + T: Tracer + Send + Sync + 'static, + ::Span: Sync + Send, +{ fn create(&self) -> Arc { Arc::new(OpenTelemetryExtension { tracer: self.tracer.clone(), @@ -52,7 +57,11 @@ struct OpenTelemetryExtension { } #[async_trait::async_trait] -impl Extension for OpenTelemetryExtension { +impl Extension for OpenTelemetryExtension +where + T: Tracer + Send + Sync + 'static, + ::Span: Sync + Send, +{ async fn request(&self, ctx: &ExtensionContext<'_>, next: NextRequest<'_>) -> Response { next.run(ctx) .with_context(OpenTelemetryContext::current_with_span(