Fix spurious "Failed to set parent context on span" error (#5228)

This commit is contained in:
Quentin Gliech authored and GitHub committed 2025-11-07 13:57:45 +01:00
commit 85fbc06919
1 file changed
+16 -11
+16 -11
View File
@@ -136,18 +136,23 @@ fn make_http_span<B>(req: &Request<B>) -> Span {
span.record(USER_AGENT_ORIGINAL, user_agent);
}
// Extract the parent span context from the request headers
let parent_context = opentelemetry::global::get_text_map_propagator(|propagator| {
let extractor = HeaderExtractor(req.headers());
let context = opentelemetry::Context::new();
propagator.extract_with_context(&context, &extractor)
});
// In case the span is disabled by any of tracing layers, e.g. if `RUST_LOG`
// is set to `warn`, `set_parent` will fail. So we only try to set the
// parent context if the span is not disabled.
if !span.is_disabled() {
// Extract the parent span context from the request headers
let parent_context = opentelemetry::global::get_text_map_propagator(|propagator| {
let extractor = HeaderExtractor(req.headers());
let context = opentelemetry::Context::new();
propagator.extract_with_context(&context, &extractor)
});
if let Err(err) = span.set_parent(parent_context) {
tracing::error!(
error = &err as &dyn std::error::Error,
"Failed to set parent context on span"
);
if let Err(err) = span.set_parent(parent_context) {
tracing::error!(
error = &err as &dyn std::error::Error,
"Failed to set parent context on span"
);
}
}
span