3636
3737/** {@link SdkSpanBuilder} is SDK implementation of {@link SpanBuilder}. */
3838class SdkSpanBuilder implements SpanBuilder {
39-
40- private static final Context ROOT_CONTEXT_WITH_RANDOM_TRACE_ID_BIT =
41- preparePrimordialContext (
42- TraceFlags .builder ().setRandomTraceId (true ).build (), TraceState .getDefault ());
43-
4439 private final String spanName ;
4540 private final InstrumentationScopeInfo instrumentationScopeInfo ;
4641 private final TracerSharedState tracerSharedState ;
@@ -64,17 +59,6 @@ class SdkSpanBuilder implements SpanBuilder {
6459 this .spanLimits = spanLimits ;
6560 }
6661
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-
7862 @ Override
7963 public SpanBuilder setParent (Context context ) {
8064 if (context == null ) {
@@ -198,7 +182,13 @@ public Span startSpan() {
198182 if (idGenerator .generatesRandomTraceIds ()) {
199183 isTraceIdRandom = true ;
200184 // Replace parentContext for sampling with one with RANDOM_TRACE_ID bit set
201- parentContextForSampler = ROOT_CONTEXT_WITH_RANDOM_TRACE_ID_BIT ;
185+ SpanContext primordialSpan =
186+ SpanContext .create (
187+ TraceId .getInvalid (),
188+ SpanId .getInvalid (),
189+ TraceFlags .builder ().setRandomTraceId (true ).build (),
190+ TraceState .getDefault ());
191+ parentContextForSampler = parentContext .with (Span .wrap (primordialSpan ));
202192 } else {
203193 isTraceIdRandom = false ;
204194 }
0 commit comments