diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/autoconfig/TraceBaggageConfiguration.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/autoconfig/TraceBaggageConfiguration.java index 3675245db..db9898430 100644 --- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/autoconfig/TraceBaggageConfiguration.java +++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/autoconfig/TraceBaggageConfiguration.java @@ -73,6 +73,11 @@ class TraceBaggageConfiguration { static final String WHITELISTED_KEYS = "spring.sleuth.propagation.tag.whitelisted-keys"; static final String WHITELISTED_MDC_KEYS = "spring.sleuth.log.slf4j.whitelisted-mdc-keys"; + // Note: Versions <2.2.3 use injectFormat(MULTI) for non-remote (ex spring-messaging) + // See #1643 + static final Propagation.Factory B3_FACTORY = B3Propagation.newFactoryBuilder() + .injectFormat(B3Propagation.Format.SINGLE_NO_PARENT).build(); + // These List beans allow us to get deprecated property values, regardless of // if they were comma or yaml encoded. This keeps them out of SleuthBaggageProperties @@ -112,8 +117,7 @@ class TraceBaggageConfiguration { @Bean @ConditionalOnMissingBean BaggagePropagation.FactoryBuilder baggagePropagationFactoryBuilder() { - return BaggagePropagation.newFactoryBuilder(B3Propagation.newFactoryBuilder() - .injectFormat(B3Propagation.Format.SINGLE_NO_PARENT).build()); + return BaggagePropagation.newFactoryBuilder(B3_FACTORY); } @Bean diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/autoconfig/TraceAutoConfigurationPropagationCustomizationTests.java b/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/autoconfig/TraceAutoConfigurationPropagationCustomizationTests.java index f7da8c5a6..486c7af67 100644 --- a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/autoconfig/TraceAutoConfigurationPropagationCustomizationTests.java +++ b/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/autoconfig/TraceAutoConfigurationPropagationCustomizationTests.java @@ -16,10 +16,7 @@ package org.springframework.cloud.sleuth.autoconfig; -import brave.Tracing; import brave.baggage.BaggagePropagation; -import brave.propagation.B3Propagation; -import brave.propagation.B3Propagation.Format; import brave.propagation.B3SinglePropagation; import brave.propagation.Propagation; import org.assertj.core.api.BDDAssertions; @@ -32,11 +29,6 @@ import org.springframework.context.annotation.Configuration; public class TraceAutoConfigurationPropagationCustomizationTests { - // Default for spring-messaging is on 2.2.x is MULTI, though 3.x it is - // SINGLE_NO_PARENT spring-cloud/spring-cloud-sleuth#1607 - Propagation.Factory defaultB3Propagation = B3Propagation.newFactoryBuilder() - .injectFormat(Format.SINGLE_NO_PARENT).build(); - private final ApplicationContextRunner contextRunner = new ApplicationContextRunner() .withConfiguration(AutoConfigurations.of(TraceAutoConfiguration.class)); @@ -44,7 +36,7 @@ public class TraceAutoConfigurationPropagationCustomizationTests { public void stillCreatesDefault() { this.contextRunner.run((context) -> { BDDAssertions.then(context.getBean(Propagation.Factory.class)) - .isEqualTo(defaultB3Propagation); + .isEqualTo(TraceBaggageConfiguration.B3_FACTORY); }); } @@ -54,7 +46,8 @@ public class TraceAutoConfigurationPropagationCustomizationTests { .withPropertyValues("spring.sleuth.baggage.remote-fields=country-code") .run((context) -> { BDDAssertions.then(context.getBean(Propagation.Factory.class)) - .extracting("delegate").isNotNull(); + .extracting("delegate") + .isEqualTo(TraceBaggageConfiguration.B3_FACTORY); }); } @@ -62,8 +55,8 @@ public class TraceAutoConfigurationPropagationCustomizationTests { public void defaultValueUsedWhenApplicationNameNotSet() { this.contextRunner.withPropertyValues("spring.application.name=") .run((context) -> { - BDDAssertions.then(context.getBean(Tracing.class).propagation()) - .isEqualTo(defaultB3Propagation); + BDDAssertions.then(context.getBean(Propagation.Factory.class)) + .isEqualTo(TraceBaggageConfiguration.B3_FACTORY); }); }