Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,14 @@

## Unreleased

### API

#### Extensions

* Trace propagators: Fix `JaegerPropagator` overwriting existing baggage when the `jaeger-baggage`
header has no parsable entries
([#8632](https://github.com/open-telemetry/opentelemetry-java/pull/8632))

### SDK

#### Exporters
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -291,7 +291,11 @@ private static <C> Baggage getBaggageFromHeader(@Nullable C carrier, TextMapGett
}
}
}
return builder == null ? null : builder.build();
if (builder == null) {
return null;
}
Baggage baggage = builder.build();
return baggage.isEmpty() ? null : baggage;
}

/** Returns a two-element array of {@code [entriesAdded, bytesAdded]}. */
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -443,6 +443,26 @@ void extract_baggageOnly_withHeader_invalid() {
.isEqualTo(Baggage.empty());
}

@ParameterizedTest
@MethodSource
void extract_baggageOnly_withHeader_invalid_keepsExistingBaggage(String headerValue) {
Baggage existingBaggage = Baggage.builder().put("user", "alice").build();
Map<String, String> carrier = new LinkedHashMap<>();
carrier.put(BAGGAGE_HEADER, headerValue);

Context context = Context.root().with(existingBaggage);
assertThat(fromContext(jaegerPropagator.extract(context, carrier, getter)))
.isEqualTo(existingBaggage);
}

static Stream<Arguments> extract_baggageOnly_withHeader_invalid_keepsExistingBaggage() {
return Stream.of(
Arguments.argumentSet("no separator", "nometa+novalue"),
Arguments.argumentSet("empty value", "user="),
Arguments.argumentSet("empty header", ""),
Arguments.argumentSet("too many separators", "a=b=c"));
}

@Test
void extract_baggageOnly_withHeader_andPrefix() {
Map<String, String> carrier = new LinkedHashMap<>();
Expand Down
Loading