Auto-configure remote fields on BraveBaggageManager
Closes gh-41884
This commit is contained in:
@@ -155,7 +155,8 @@ public class BraveAutoConfiguration {
|
||||
@ConditionalOnMissingBean(io.micrometer.tracing.Tracer.class)
|
||||
BraveTracer braveTracerBridge(brave.Tracer tracer, CurrentTraceContext currentTraceContext) {
|
||||
return new BraveTracer(tracer, new BraveCurrentTraceContext(currentTraceContext),
|
||||
new BraveBaggageManager(this.tracingProperties.getBaggage().getTagFields()));
|
||||
new BraveBaggageManager(this.tracingProperties.getBaggage().getTagFields(),
|
||||
this.tracingProperties.getBaggage().getRemoteFields()));
|
||||
}
|
||||
|
||||
@Bean
|
||||
|
||||
@@ -91,7 +91,8 @@ class BravePropagationConfigurations {
|
||||
.forEach((customizer) -> customizer.customize(throwAwayBuilder));
|
||||
CompositePropagationFactory propagationFactory = CompositePropagationFactory.create(
|
||||
this.tracingProperties.getPropagation(),
|
||||
new BraveBaggageManager(this.tracingProperties.getBaggage().getTagFields()),
|
||||
new BraveBaggageManager(this.tracingProperties.getBaggage().getTagFields(),
|
||||
this.tracingProperties.getBaggage().getRemoteFields()),
|
||||
LocalBaggageFields.extractFrom(throwAwayBuilder));
|
||||
FactoryBuilder builder = BaggagePropagation.newFactoryBuilder(propagationFactory);
|
||||
throwAwayBuilder.configs().forEach(builder::add);
|
||||
|
||||
@@ -35,6 +35,9 @@ import brave.propagation.Propagation;
|
||||
import brave.propagation.Propagation.Factory;
|
||||
import brave.propagation.TraceContext;
|
||||
import brave.sampler.Sampler;
|
||||
import io.micrometer.observation.Observation;
|
||||
import io.micrometer.observation.Observation.Scope;
|
||||
import io.micrometer.observation.ObservationRegistry;
|
||||
import io.micrometer.tracing.brave.bridge.BraveBaggageManager;
|
||||
import io.micrometer.tracing.brave.bridge.BraveSpanCustomizer;
|
||||
import io.micrometer.tracing.brave.bridge.BraveTracer;
|
||||
@@ -47,6 +50,7 @@ import org.assertj.core.api.Assertions;
|
||||
import org.assertj.core.api.InstanceOfAssertFactories;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import org.springframework.boot.actuate.autoconfigure.observation.ObservationAutoConfiguration;
|
||||
import org.springframework.boot.actuate.autoconfigure.tracing.BraveAutoConfigurationTests.SpanHandlerConfiguration.AdditionalSpanHandler;
|
||||
import org.springframework.boot.autoconfigure.AutoConfigurations;
|
||||
import org.springframework.boot.context.properties.IncompatibleConfigurationException;
|
||||
@@ -364,6 +368,29 @@ class BraveAutoConfigurationTests {
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
void keysAreSetInBaggage() {
|
||||
this.contextRunner
|
||||
.withConfiguration(
|
||||
AutoConfigurations.of(ObservationAutoConfiguration.class, MicrometerTracingAutoConfiguration.class))
|
||||
.withPropertyValues("management.tracing.baggage.remote-fields=f1,f2")
|
||||
.run((context) -> {
|
||||
BraveTracer braveTracer = context.getBean(BraveTracer.class);
|
||||
ObservationRegistry observationRegistry = context.getBean(ObservationRegistry.class);
|
||||
Observation observation = Observation.start("o1", observationRegistry)
|
||||
.lowCardinalityKeyValue("f1", "v1")
|
||||
.highCardinalityKeyValue("f2", "v2");
|
||||
Map<String, String> baggage = braveTracer.getAllBaggage();
|
||||
assertThat(baggage).isEmpty();
|
||||
try (Scope ignore = observation.openScope()) {
|
||||
baggage = braveTracer.getAllBaggage();
|
||||
assertThat(baggage).containsAllEntriesOf(Map.of("f1", "v1", "f2", "v2"));
|
||||
}
|
||||
baggage = braveTracer.getAllBaggage();
|
||||
assertThat(baggage).isEmpty();
|
||||
});
|
||||
}
|
||||
|
||||
private void injectToMap(Map<String, String> map, String key, String value) {
|
||||
map.put(key, value);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user