Skip to content

Commit 6dd288b

Browse files
committed
only add baggage to context if actually present
1 parent 8afcdd9 commit 6dd288b

File tree

2 files changed

+36
-3
lines changed

2 files changed

+36
-3
lines changed

sentry-opentelemetry/sentry-opentelemetry-otlp/src/main/java/io/sentry/opentelemetry/otlp/OpenTelemetryOtlpPropagator.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,6 @@ public <C> Context extract(
8787
SentryTraceHeader sentryTraceHeader = new SentryTraceHeader(sentryTraceString);
8888

8989
final @Nullable String baggageString = getter.get(carrier, BaggageHeader.BAGGAGE_HEADER);
90-
final Baggage baggage = Baggage.fromHeader(baggageString);
9190
final @NotNull TraceState traceState = TraceState.getDefault();
9291

9392
final @NotNull TraceFlags traceFlags =
@@ -104,8 +103,11 @@ public <C> Context extract(
104103

105104
Span wrappedSpan = Span.wrap(otelSpanContext);
106105

107-
final @NotNull Context modifiedContext =
108-
context.with(wrappedSpan).with(SENTRY_BAGGAGE_KEY, baggage);
106+
@NotNull Context modifiedContext = context.with(wrappedSpan);
107+
if (baggageString != null) {
108+
modifiedContext =
109+
modifiedContext.with(SENTRY_BAGGAGE_KEY, Baggage.fromHeader(baggageString));
110+
}
109111

110112
scopes
111113
.getOptions()

sentry-opentelemetry/sentry-opentelemetry-otlp/src/test/kotlin/OtelSentryPropagatorTest.kt

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,37 @@ class OpenTelemetryOtlpPropagatorTest {
6868
)
6969
}
7070

71+
@Test
72+
fun `extract does not store baggage in context when baggage header is missing`() {
73+
val propagator = OpenTelemetryOtlpPropagator()
74+
val carrier: Map<String, String> =
75+
mapOf("sentry-trace" to "f9118105af4a2d42b4124532cd1065ff-424cffc8f94feeee-1")
76+
val newContext = propagator.extract(Context.root(), carrier, MapGetter())
77+
78+
assertNull(newContext.get(OpenTelemetryOtlpPropagator.SENTRY_BAGGAGE_KEY))
79+
}
80+
81+
@Test
82+
fun `does not inject baggage header when baggage is missing from context`() {
83+
val propagator = OpenTelemetryOtlpPropagator()
84+
val carrier = mutableMapOf<String, String>()
85+
86+
val otelSpanContext =
87+
SpanContext.create(
88+
"f9118105af4a2d42b4124532cd1065ff",
89+
"424cffc8f94feeee",
90+
TraceFlags.getSampled(),
91+
TraceState.getDefault(),
92+
)
93+
val otelSpan = Span.wrap(otelSpanContext)
94+
val context = Context.root().with(otelSpan)
95+
96+
propagator.inject(context, carrier, MapSetter())
97+
98+
assertEquals("f9118105af4a2d42b4124532cd1065ff-424cffc8f94feeee-1", carrier["sentry-trace"])
99+
assertNull(carrier["baggage"])
100+
}
101+
71102
@Test
72103
fun `extract sets sampled trace flag when sentry-trace has sampled=0`() {
73104
val propagator = OpenTelemetryOtlpPropagator()

0 commit comments

Comments
 (0)