Skip to content

Commit 810fbca

Browse files
committed
Auto-configure remote fields on BraveBaggageManager
Closes gh-41884
1 parent 761234f commit 810fbca

File tree

3 files changed

+31
-2
lines changed

3 files changed

+31
-2
lines changed

spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/tracing/BraveAutoConfiguration.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,8 @@ Sampler braveSampler() {
155155
@ConditionalOnMissingBean(io.micrometer.tracing.Tracer.class)
156156
BraveTracer braveTracerBridge(brave.Tracer tracer, CurrentTraceContext currentTraceContext) {
157157
return new BraveTracer(tracer, new BraveCurrentTraceContext(currentTraceContext),
158-
new BraveBaggageManager(this.tracingProperties.getBaggage().getTagFields()));
158+
new BraveBaggageManager(this.tracingProperties.getBaggage().getTagFields(),
159+
this.tracingProperties.getBaggage().getRemoteFields()));
159160
}
160161

161162
@Bean

spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/tracing/BravePropagationConfigurations.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,8 @@ BaggagePropagation.FactoryBuilder propagationFactoryBuilder(
9191
.forEach((customizer) -> customizer.customize(throwAwayBuilder));
9292
CompositePropagationFactory propagationFactory = CompositePropagationFactory.create(
9393
this.tracingProperties.getPropagation(),
94-
new BraveBaggageManager(this.tracingProperties.getBaggage().getTagFields()),
94+
new BraveBaggageManager(this.tracingProperties.getBaggage().getTagFields(),
95+
this.tracingProperties.getBaggage().getRemoteFields()),
9596
LocalBaggageFields.extractFrom(throwAwayBuilder));
9697
FactoryBuilder builder = BaggagePropagation.newFactoryBuilder(propagationFactory);
9798
throwAwayBuilder.configs().forEach(builder::add);

spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/tracing/BraveAutoConfigurationTests.java

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,9 @@
3535
import brave.propagation.Propagation.Factory;
3636
import brave.propagation.TraceContext;
3737
import brave.sampler.Sampler;
38+
import io.micrometer.observation.Observation;
39+
import io.micrometer.observation.Observation.Scope;
40+
import io.micrometer.observation.ObservationRegistry;
3841
import io.micrometer.tracing.brave.bridge.BraveBaggageManager;
3942
import io.micrometer.tracing.brave.bridge.BraveSpanCustomizer;
4043
import io.micrometer.tracing.brave.bridge.BraveTracer;
@@ -47,6 +50,7 @@
4750
import org.assertj.core.api.InstanceOfAssertFactories;
4851
import org.junit.jupiter.api.Test;
4952

53+
import org.springframework.boot.actuate.autoconfigure.observation.ObservationAutoConfiguration;
5054
import org.springframework.boot.actuate.autoconfigure.tracing.BraveAutoConfigurationTests.SpanHandlerConfiguration.AdditionalSpanHandler;
5155
import org.springframework.boot.autoconfigure.AutoConfigurations;
5256
import org.springframework.boot.context.properties.IncompatibleConfigurationException;
@@ -364,6 +368,29 @@ void shouldConfigureTaggedFields() {
364368
});
365369
}
366370

371+
@Test
372+
void keysAreSetInBaggage() {
373+
this.contextRunner
374+
.withConfiguration(
375+
AutoConfigurations.of(ObservationAutoConfiguration.class, MicrometerTracingAutoConfiguration.class))
376+
.withPropertyValues("management.tracing.baggage.remote-fields=f1,f2")
377+
.run((context) -> {
378+
BraveTracer braveTracer = context.getBean(BraveTracer.class);
379+
ObservationRegistry observationRegistry = context.getBean(ObservationRegistry.class);
380+
Observation observation = Observation.start("o1", observationRegistry)
381+
.lowCardinalityKeyValue("f1", "v1")
382+
.highCardinalityKeyValue("f2", "v2");
383+
Map<String, String> baggage = braveTracer.getAllBaggage();
384+
assertThat(baggage).isEmpty();
385+
try (Scope ignore = observation.openScope()) {
386+
baggage = braveTracer.getAllBaggage();
387+
assertThat(baggage).containsAllEntriesOf(Map.of("f1", "v1", "f2", "v2"));
388+
}
389+
baggage = braveTracer.getAllBaggage();
390+
assertThat(baggage).isEmpty();
391+
});
392+
}
393+
367394
private void injectToMap(Map<String, String> map, String key, String value) {
368395
map.put(key, value);
369396
}

0 commit comments

Comments
 (0)