From e72898dacce5012a9f876556dff428c82043ab56 Mon Sep 17 00:00:00 2001 From: Florian Klink Date: Mon, 11 May 2026 12:34:31 +0300 Subject: [PATCH 1/2] fix: don't log a warning if span is disabled This has been logging lots of unactionable warnings, don't log in that case. See https://github.com/davidB/tracing-opentelemetry-instrumentation-sdk/issues/310#issuecomment-4412540702 --- .../src/middleware/trace_extractor.rs | 9 +++++++-- tonic-tracing-opentelemetry/src/middleware/server.rs | 9 +++++++-- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/axum-tracing-opentelemetry/src/middleware/trace_extractor.rs b/axum-tracing-opentelemetry/src/middleware/trace_extractor.rs index 06e7094..9146da3 100644 --- a/axum-tracing-opentelemetry/src/middleware/trace_extractor.rs +++ b/axum-tracing-opentelemetry/src/middleware/trace_extractor.rs @@ -138,7 +138,7 @@ where } fn call(&mut self, req: Request) -> Self::Future { - use tracing_opentelemetry::OpenTelemetrySpanExt; + use tracing_opentelemetry::{OpenTelemetrySpanExt, SetParentError}; let req = req; let span = if self.filter.is_none_or(|f| f(req.uri().path())) { let route = http_route(&req); @@ -162,7 +162,12 @@ where span.record(CLIENT_ADDRESS, client_ip); } if let Err(error) = span.set_parent(otel_http::extract_context(req.headers())) { - tracing::warn!(?error, "can not set parent trace_id to span"); + match error { + SetParentError::LayerNotFound | SetParentError::AlreadyStarted => { + tracing::warn!(?error, "can not set parent trace_id to span"); + } + SetParentError::SpanDisabled => {} + } } span } else { diff --git a/tonic-tracing-opentelemetry/src/middleware/server.rs b/tonic-tracing-opentelemetry/src/middleware/server.rs index 0892ad7..21649e3 100644 --- a/tonic-tracing-opentelemetry/src/middleware/server.rs +++ b/tonic-tracing-opentelemetry/src/middleware/server.rs @@ -72,7 +72,7 @@ where } fn call(&mut self, req: Request) -> Self::Future { - use tracing_opentelemetry::OpenTelemetrySpanExt; + use tracing_opentelemetry::{OpenTelemetrySpanExt, SetParentError}; // This is necessary because tonic internally uses `tower::buffer::Buffer`. // See https://github.com/tower-rs/tower/issues/547#issuecomment-767629149 // for details on why this is necessary @@ -82,7 +82,12 @@ where let span = if self.filter.is_none_or(|f| f(req.uri().path())) { let span = otel_http::grpc_server::make_span_from_request(&req); if let Err(error) = span.set_parent(otel_http::extract_context(req.headers())) { - tracing::warn!(?error, "can not set parent trace_id to span"); + match error { + SetParentError::LayerNotFound | SetParentError::AlreadyStarted => { + tracing::warn!(?error, "can not set parent trace_id to span"); + } + SetParentError::SpanDisabled => {} + } } span } else { From 2185c6cb5fa2324bd1a76a4baa907ca32a437b47 Mon Sep 17 00:00:00 2001 From: Florian Klink Date: Mon, 11 May 2026 13:19:59 +0300 Subject: [PATCH 2/2] fix: tonic-tracing-opentelemetry: fix typo --- tonic-tracing-opentelemetry/src/middleware/client.rs | 2 +- tonic-tracing-opentelemetry/src/middleware/server.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tonic-tracing-opentelemetry/src/middleware/client.rs b/tonic-tracing-opentelemetry/src/middleware/client.rs index 4bd8e24..a8ef3da 100644 --- a/tonic-tracing-opentelemetry/src/middleware/client.rs +++ b/tonic-tracing-opentelemetry/src/middleware/client.rs @@ -17,7 +17,7 @@ use tracing_opentelemetry_instrumentation_sdk::{find_context_from_tracing, http /// - propagate `OpenTelemetry` context (`trace_id`,...) to server /// - create a Span for `OpenTelemetry` (and tracing) on call /// -/// `OpenTelemetry` context are extracted frim tracing's span. +/// `OpenTelemetry` context are extracted from tracing's span. #[derive(Default, Debug, Clone)] pub struct OtelGrpcLayer; diff --git a/tonic-tracing-opentelemetry/src/middleware/server.rs b/tonic-tracing-opentelemetry/src/middleware/server.rs index 21649e3..43989dd 100644 --- a/tonic-tracing-opentelemetry/src/middleware/server.rs +++ b/tonic-tracing-opentelemetry/src/middleware/server.rs @@ -17,7 +17,7 @@ pub type Filter = fn(&str) -> bool; /// - propagate `OpenTelemetry` context (`trace_id`, ...) to server /// - create a Span for `OpenTelemetry` (and tracing) on call /// -/// `OpenTelemetry` context are extracted frim tracing's span. +/// `OpenTelemetry` context are extracted from tracing's span. #[derive(Default, Debug, Clone)] pub struct OtelGrpcLayer { filter: Option,