Skip to content

Commit c4d97f2

Browse files
committed
retain propagator context for random trace-ids
1 parent 7daa1f3 commit c4d97f2

File tree

1 file changed

+7
-17
lines changed

1 file changed

+7
-17
lines changed

sdk/trace/src/main/java/io/opentelemetry/sdk/trace/SdkSpanBuilder.java

Lines changed: 7 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -36,11 +36,6 @@
3636

3737
/** {@link SdkSpanBuilder} is SDK implementation of {@link SpanBuilder}. */
3838
class 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

Comments
 (0)