Skip to content

Commit 85fbc06

Browse files
authored
Fix spurious "Failed to set parent context on span" error (#5228)
2 parents 99a5ebe + eeb5d61 commit 85fbc06

File tree

1 file changed

+17
-12
lines changed

1 file changed

+17
-12
lines changed

crates/cli/src/server.rs

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -136,18 +136,23 @@ fn make_http_span<B>(req: &Request<B>) -> Span {
136136
span.record(USER_AGENT_ORIGINAL, user_agent);
137137
}
138138

139-
// Extract the parent span context from the request headers
140-
let parent_context = opentelemetry::global::get_text_map_propagator(|propagator| {
141-
let extractor = HeaderExtractor(req.headers());
142-
let context = opentelemetry::Context::new();
143-
propagator.extract_with_context(&context, &extractor)
144-
});
145-
146-
if let Err(err) = span.set_parent(parent_context) {
147-
tracing::error!(
148-
error = &err as &dyn std::error::Error,
149-
"Failed to set parent context on span"
150-
);
139+
// In case the span is disabled by any of tracing layers, e.g. if `RUST_LOG`
140+
// is set to `warn`, `set_parent` will fail. So we only try to set the
141+
// parent context if the span is not disabled.
142+
if !span.is_disabled() {
143+
// Extract the parent span context from the request headers
144+
let parent_context = opentelemetry::global::get_text_map_propagator(|propagator| {
145+
let extractor = HeaderExtractor(req.headers());
146+
let context = opentelemetry::Context::new();
147+
propagator.extract_with_context(&context, &extractor)
148+
});
149+
150+
if let Err(err) = span.set_parent(parent_context) {
151+
tracing::error!(
152+
error = &err as &dyn std::error::Error,
153+
"Failed to set parent context on span"
154+
);
155+
}
151156
}
152157

153158
span

0 commit comments

Comments
 (0)