Skip to content

Commit 9eaaaa7

Browse files
committed
retain propagated context for random trace-ids
1 parent a9d4586 commit 9eaaaa7

File tree

1 file changed

+8
-15
lines changed

1 file changed

+8
-15
lines changed

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

Lines changed: 8 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,13 @@
3737
/** {@link SdkSpanBuilder} is SDK implementation of {@link SpanBuilder}. */
3838
class 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

Comments
 (0)