diff --git a/pom.xml b/pom.xml index c4131254a..f4d5e6126 100644 --- a/pom.xml +++ b/pom.xml @@ -272,9 +272,9 @@ Elmhurst.BUILD-SNAPSHOT 2.0.0.BUILD-SNAPSHOT 2.0.0.BUILD-SNAPSHOT - 4.18.0 + 4.18.1 - 2.5.1 + 2.6.1 2.0.0.RELEASE diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/autoconfig/SleuthProperties.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/autoconfig/SleuthProperties.java index 78f105b5c..878314cc6 100644 --- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/autoconfig/SleuthProperties.java +++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/autoconfig/SleuthProperties.java @@ -34,6 +34,9 @@ public class SleuthProperties { /** When true, generate 128-bit trace IDs instead of 64-bit ones. */ private boolean traceId128 = false; + /** True means the tracing system supports sharing a span ID between a client and server. */ + private boolean supportsJoin = true; + /** * List of baggage key names that should be propagated out of process. * These keys will be prefixed with `baggage` before the actual key. @@ -70,6 +73,14 @@ public class SleuthProperties { this.traceId128 = traceId128; } + public boolean isSupportsJoin() { + return this.supportsJoin; + } + + public void setSupportsJoin(boolean supportsJoin) { + this.supportsJoin = supportsJoin; + } + public List getBaggageKeys() { return this.baggageKeys; } diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/autoconfig/TraceAutoConfiguration.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/autoconfig/TraceAutoConfiguration.java index a0bcc2a51..fcac42341 100644 --- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/autoconfig/TraceAutoConfiguration.java +++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/autoconfig/TraceAutoConfiguration.java @@ -74,6 +74,7 @@ public class TraceAutoConfiguration { .currentTraceContext(currentTraceContext) .spanReporter(adjustedReporter(reporter)) .traceId128Bit(sleuthProperties.isTraceId128()) + .supportsJoin(sleuthProperties.isSupportsJoin()) .build(); } diff --git a/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin2/ZipkinAutoConfiguration.java b/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin2/ZipkinAutoConfiguration.java index 1943918c5..515c2fc84 100644 --- a/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin2/ZipkinAutoConfiguration.java +++ b/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin2/ZipkinAutoConfiguration.java @@ -20,6 +20,7 @@ import java.util.concurrent.TimeUnit; import brave.sampler.Sampler; import zipkin2.Span; +import zipkin2.codec.BytesEncoder; import zipkin2.reporter.AsyncReporter; import zipkin2.reporter.InMemoryReporterMetrics; import zipkin2.reporter.Reporter; @@ -78,13 +79,20 @@ public class ZipkinAutoConfiguration { public Reporter reporter( ReporterMetrics reporterMetrics, ZipkinProperties zipkin, - Sender sender + Sender sender, + BytesEncoder spanBytesEncoder ) { return AsyncReporter.builder(sender) .queuedMaxSpans(1000) // historical constraint. Note: AsyncReporter supports memory bounds .messageTimeout(zipkin.getMessageTimeout(), TimeUnit.SECONDS) .metrics(reporterMetrics) - .build(zipkin.getEncoder()); + .build(spanBytesEncoder); + } + + @Bean + @ConditionalOnMissingBean + public BytesEncoder spanBytesEncoder(ZipkinProperties zipkinProperties) { + return zipkinProperties.getEncoder(); } @Bean