3737/** {@link SdkSpanBuilder} is SDK implementation of {@link SpanBuilder}. */
3838class SdkSpanBuilder implements SpanBuilder {
3939
40- private static final Context ROOT_CONTEXT_WITH_RANDOM_TRACE_ID_BIT =
41- preparePrimordialContext (
42- TraceFlags .builder ().setRandomTraceId (true ).build (), TraceState .getDefault ());
40+ private static final Span RANDOM_TRACE_ID_PRIMORDIAL_SPAN =
41+ Span .wrap (
42+ SpanContext .create (
43+ TraceId .getInvalid (),
44+ SpanId .getInvalid (),
45+ TraceFlags .builder ().setRandomTraceId (true ).build (),
46+ TraceState .getDefault ()));
4347
4448 private final String spanName ;
4549 private final InstrumentationScopeInfo instrumentationScopeInfo ;
@@ -64,17 +68,6 @@ class SdkSpanBuilder implements SpanBuilder {
6468 this .spanLimits = spanLimits ;
6569 }
6670
67- /*
68- * A primordial context can be passed as the parent context for a root span
69- * if a non-default TraceFlags or TraceState need to be passed to the sampler
70- */
71- private static Context preparePrimordialContext (TraceFlags traceFlags , TraceState traceState ) {
72- SpanContext spanContext =
73- SpanContext .create (TraceId .getInvalid (), SpanId .getInvalid (), traceFlags , traceState );
74- Span span = Span .wrap (spanContext );
75- return span .storeInContext (Context .root ());
76- }
77-
7871 @ Override
7972 public SpanBuilder setParent (Context context ) {
8073 if (context == null ) {
@@ -198,7 +191,7 @@ public Span startSpan() {
198191 if (idGenerator .generatesRandomTraceIds ()) {
199192 isTraceIdRandom = true ;
200193 // Replace parentContext for sampling with one with RANDOM_TRACE_ID bit set
201- parentContextForSampler = ROOT_CONTEXT_WITH_RANDOM_TRACE_ID_BIT ;
194+ parentContextForSampler = parentContext . with ( RANDOM_TRACE_ID_PRIMORDIAL_SPAN ) ;
202195 } else {
203196 isTraceIdRandom = false ;
204197 }
0 commit comments