66from instana .log import logger
77from instana .propagators .base_propagator import BasePropagator , CarrierT
88from instana .util .ids import hex_id_limited
9+ from instana .span_context import SpanContext
910
1011if TYPE_CHECKING :
1112 from instana .span_context import SpanContext
@@ -103,7 +104,26 @@ def inject(
103104 # Suppression `level` made in the child context or in the parent context
104105 # has priority over any non-suppressed `level` setting
105106 suppression_level = int (self .extract_instana_headers (dictionary_carrier )[2 ])
106- span_context .level = min (suppression_level , span_context .level )
107+ new_level = min (suppression_level , span_context .level )
108+
109+ if new_level != span_context .level :
110+ # Create a new span context with the updated level
111+ span_context = SpanContext (
112+ trace_id = span_context .trace_id ,
113+ span_id = span_context .span_id ,
114+ is_remote = span_context .is_remote ,
115+ trace_flags = span_context .trace_flags ,
116+ trace_state = span_context .trace_state ,
117+ level = new_level ,
118+ synthetic = span_context .synthetic ,
119+ trace_parent = span_context .trace_parent ,
120+ instana_ancestor = span_context .instana_ancestor ,
121+ long_trace_id = span_context .long_trace_id ,
122+ correlation_type = span_context .correlation_type ,
123+ correlation_id = span_context .correlation_id ,
124+ traceparent = span_context .traceparent ,
125+ tracestate = span_context .tracestate
126+ )
107127
108128 def inject_key_value (carrier , key , value ):
109129 if isinstance (carrier , list ):
@@ -119,9 +139,9 @@ def inject_key_value(carrier, key, value):
119139 inject_key_value (
120140 carrier ,
121141 self .KAFKA_HEADER_KEY_L_S ,
122- str (suppression_level ).encode ("utf-8" ),
142+ str (span_context . level ).encode ("utf-8" ),
123143 )
124- if suppression_level == 1 :
144+ if span_context . level == 1 :
125145 inject_key_value (
126146 carrier ,
127147 self .KAFKA_HEADER_KEY_T ,
0 commit comments