@@ -103,7 +103,26 @@ def inject(
103103 # Suppression `level` made in the child context or in the parent context
104104 # has priority over any non-suppressed `level` setting
105105 suppression_level = int (self .extract_instana_headers (dictionary_carrier )[2 ])
106- span_context .level = min (suppression_level , span_context .level )
106+ new_level = min (suppression_level , span_context .level )
107+
108+ if new_level != span_context .level :
109+ # Create a new span context with the updated level
110+ span_context = SpanContext (
111+ trace_id = span_context .trace_id ,
112+ span_id = span_context .span_id ,
113+ is_remote = span_context .is_remote ,
114+ trace_flags = span_context .trace_flags ,
115+ trace_state = span_context .trace_state ,
116+ level = new_level ,
117+ synthetic = span_context .synthetic ,
118+ trace_parent = span_context .trace_parent ,
119+ instana_ancestor = span_context .instana_ancestor ,
120+ long_trace_id = span_context .long_trace_id ,
121+ correlation_type = span_context .correlation_type ,
122+ correlation_id = span_context .correlation_id ,
123+ traceparent = span_context .traceparent ,
124+ tracestate = span_context .tracestate
125+ )
107126
108127 def inject_key_value (carrier , key , value ):
109128 if isinstance (carrier , list ):
@@ -119,9 +138,9 @@ def inject_key_value(carrier, key, value):
119138 inject_key_value (
120139 carrier ,
121140 self .KAFKA_HEADER_KEY_L_S ,
122- str (suppression_level ).encode ("utf-8" ),
141+ str (span_context . level ).encode ("utf-8" ),
123142 )
124- if suppression_level == 1 :
143+ if span_context . level == 1 :
125144 inject_key_value (
126145 carrier ,
127146 self .KAFKA_HEADER_KEY_T ,
0 commit comments