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