@@ -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