File tree Expand file tree Collapse file tree
src/opentelemetry/sdk/trace Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ Preserve the random trace ID flag when creating child spans instead of always setting the random trace id bit depending on the available trace id generator.
Original file line number Diff line number Diff line change @@ -1225,7 +1225,12 @@ def start_span( # pylint: disable=too-many-locals
12251225 else trace_api .TraceFlags (trace_api .TraceFlags .DEFAULT )
12261226 )
12271227
1228- if self .id_generator .is_trace_id_random ():
1228+ if parent_span_context is None :
1229+ random_trace_id = self .id_generator .is_trace_id_random ()
1230+ else :
1231+ random_trace_id = parent_span_context .trace_flags .random_trace_id
1232+
1233+ if random_trace_id :
12291234 trace_flags = trace_api .TraceFlags (
12301235 trace_flags | trace_api .TraceFlags .RANDOM_TRACE_ID
12311236 )
Original file line number Diff line number Diff line change @@ -517,6 +517,35 @@ def test_start_span_explicit(self):
517517 self .assertIs (trace_api .get_current_span (), root )
518518 self .assertIsNotNone (child .end_time )
519519
520+ def test_start_span_preserves_parent_random_trace_id_flag (self ):
521+ tracer = new_tracer ()
522+
523+ for parent_trace_flags in (
524+ trace_api .TraceFlags (trace_api .TraceFlags .SAMPLED ),
525+ trace_api .TraceFlags (
526+ trace_api .TraceFlags .SAMPLED
527+ | trace_api .TraceFlags .RANDOM_TRACE_ID
528+ ),
529+ ):
530+ with self .subTest (parent_trace_flags = parent_trace_flags ):
531+ parent_context = trace_api .SpanContext (
532+ trace_id = 0x000000000000000000000000DEADBEEF ,
533+ span_id = 0x00000000DEADBEF0 ,
534+ is_remote = True ,
535+ trace_flags = parent_trace_flags ,
536+ )
537+ context = trace_api .set_span_in_context (
538+ trace_api .NonRecordingSpan (parent_context )
539+ )
540+
541+ child = tracer .start_span ("child" , context )
542+ child_trace_flags = child .get_span_context ().trace_flags
543+
544+ self .assertEqual (
545+ parent_trace_flags .random_trace_id ,
546+ child_trace_flags .random_trace_id ,
547+ )
548+
520549 def test_start_as_current_span_implicit (self ):
521550 tracer = new_tracer ()
522551
You can’t perform that action at this time.
0 commit comments