diff --git a/benchmarks/pom.xml b/benchmarks/pom.xml
index 09d38fc0f..2303d00d7 100644
--- a/benchmarks/pom.xml
+++ b/benchmarks/pom.xml
@@ -33,7 +33,7 @@
1.8
1.8
2.3.0.BUILD-SNAPSHOT
- 5.11.2
+ 5.12.0
3.14.6
diff --git a/docs/src/main/asciidoc/spring-cloud-sleuth.adoc b/docs/src/main/asciidoc/spring-cloud-sleuth.adoc
index f5daa40ea..e9f63c622 100644
--- a/docs/src/main/asciidoc/spring-cloud-sleuth.adoc
+++ b/docs/src/main/asciidoc/spring-cloud-sleuth.adoc
@@ -520,17 +520,17 @@ spring.zipkin.service.name: myService
=== Customization of Reported Spans
Before reporting spans (for example, to Zipkin) you may want to modify that span in some way.
-You can do so by using the `FinishedSpanHandler` interface.
+You can do so by implementing a `SpanHandler`.
In Sleuth, we generate spans with a fixed name.
Some users want to modify the name depending on values of tags.
-You can implement the `FinishedSpanHandler` interface to alter that name.
+You can implement the `SpanHandler` interface to alter that name.
-The following example shows how to register two beans that implement `FinishedSpanHandler`:
+The following example shows how to register two beans that implement `SpanHandler`:
[source,java]
----
-include::{project-root}//spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/FinishedSpanHandlerTests.java[tags=finishedSpanHandler,indent=0]
+include::{project-root}//spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/SpanHandlerTests.java[tags=spanHandler,indent=0]
----
The preceding example results in changing the name of the reported span to `foo bar`, just before it gets reported (for example, to Zipkin).
diff --git a/pom.xml b/pom.xml
index 92ce5aa81..546f2d502 100644
--- a/pom.xml
+++ b/pom.xml
@@ -243,7 +243,7 @@
3.1.0.BUILD-SNAPSHOT
3.0.0-SNAPSHOT
3.0.0-SNAPSHOT
- 5.11.2
+ 5.12.0
2.1.7.RELEASE
false
3.14.6
diff --git a/spring-cloud-sleuth-core/pom.xml b/spring-cloud-sleuth-core/pom.xml
index 9d5050292..a41a77fe4 100644
--- a/spring-cloud-sleuth-core/pom.xml
+++ b/spring-cloud-sleuth-core/pom.xml
@@ -298,6 +298,7 @@
spring-boot-autoconfigure-processor
true
+
org.springframework.boot
spring-boot-starter-test
diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/DefaultSpanNamer.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/DefaultSpanNamer.java
index 607a17c97..ab6786fb5 100644
--- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/DefaultSpanNamer.java
+++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/DefaultSpanNamer.java
@@ -36,7 +36,10 @@ import org.springframework.core.annotation.AnnotationUtils;
* @author Marcin Grzejszczak
* @since 1.0.0
* @see SpanName
+ * @deprecated This type should have never been public and will be hidden or removed in
+ * 3.0
*/
+@Deprecated
public class DefaultSpanNamer implements SpanNamer {
private static boolean isDefaultToString(Object delegate, String spanName) {
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 b4ae74c7c..3b639f377 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
@@ -23,7 +23,10 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
*
* @author Marcin Grzejszczak
* @since 1.0.11
+ * @deprecated This type should have never been public and will be hidden or removed in
+ * 3.0
*/
+@Deprecated
@ConfigurationProperties("spring.sleuth")
public class SleuthProperties {
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 f089cfb76..b29c69080 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
@@ -25,9 +25,8 @@ import brave.ErrorParser;
import brave.Tracer;
import brave.Tracing;
import brave.TracingCustomizer;
-import brave.handler.FinishedSpanHandler;
+import brave.handler.SpanHandler;
import brave.propagation.CurrentTraceContext;
-import brave.propagation.CurrentTraceContext.ScopeDecorator;
import brave.propagation.CurrentTraceContextCustomizer;
import brave.propagation.Propagation;
import brave.propagation.ThreadLocalCurrentTraceContext;
@@ -67,7 +66,10 @@ import org.springframework.util.StringUtils;
* @author Marcin Grzejszczak
* @author Tim Ysewyn
* @since 2.0.0
+ * @deprecated This type should have never been public and will be hidden or removed in
+ * 3.0
*/
+@Deprecated
@Configuration(proxyBeanMethods = false)
@ConditionalOnProperty(value = "spring.sleuth.enabled", matchIfMissing = true)
@EnableConfigurationProperties(SleuthProperties.class)
@@ -85,10 +87,7 @@ public class TraceAutoConfiguration {
public static final String DEFAULT_SERVICE_NAME = "default";
@Autowired(required = false)
- List finishedSpanHandlers = new ArrayList<>();
-
- @Autowired(required = false)
- List scopeDecorators = new ArrayList<>();
+ List spanHandlers = new ArrayList<>();
@Autowired(required = false)
List tracingCustomizers = new ArrayList<>();
@@ -109,8 +108,8 @@ public class TraceAutoConfiguration {
spanReporters != null ? spanReporters : Collections.emptyList()))
.traceId128Bit(sleuthProperties.isTraceId128())
.supportsJoin(sleuthProperties.isSupportsJoin());
- for (FinishedSpanHandler finishedSpanHandlerFactory : this.finishedSpanHandlers) {
- builder.addFinishedSpanHandler(finishedSpanHandlerFactory);
+ for (SpanHandler spanHandlerFactory : this.spanHandlers) {
+ builder.addSpanHandler(spanHandlerFactory);
}
for (TracingCustomizer customizer : this.tracingCustomizers) {
customizer.customize(builder);
@@ -134,11 +133,20 @@ public class TraceAutoConfiguration {
List currentTraceContextCustomizers = new ArrayList<>();
@Bean
- CurrentTraceContext sleuthCurrentTraceContext(CurrentTraceContext.Builder builder) {
- for (ScopeDecorator scopeDecorator : this.scopeDecorators) {
+ CurrentTraceContext sleuthCurrentTraceContext(CurrentTraceContext.Builder builder,
+ @Nullable List scopeDecorators,
+ @Nullable List currentTraceContextCustomizers) {
+ if (scopeDecorators == null) {
+ scopeDecorators = Collections.emptyList();
+ }
+ if (currentTraceContextCustomizers == null) {
+ currentTraceContextCustomizers = Collections.emptyList();
+ }
+
+ for (CurrentTraceContext.ScopeDecorator scopeDecorator : scopeDecorators) {
builder.addScopeDecorator(scopeDecorator);
}
- for (CurrentTraceContextCustomizer customizer : this.currentTraceContextCustomizers) {
+ for (CurrentTraceContextCustomizer customizer : currentTraceContextCustomizers) {
customizer.customize(builder);
}
return builder.build();
diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/autoconfig/TraceEnvironmentPostProcessor.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/autoconfig/TraceEnvironmentPostProcessor.java
index d3b85629c..0caef4727 100644
--- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/autoconfig/TraceEnvironmentPostProcessor.java
+++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/autoconfig/TraceEnvironmentPostProcessor.java
@@ -33,7 +33,10 @@ import org.springframework.core.env.PropertySource;
* @author Dave Syer
* @author Marcin Grzejszczak
* @since 2.0.0
+ * @deprecated This type should have never been public and will be hidden or removed in
+ * 3.0
*/
+@Deprecated
public class TraceEnvironmentPostProcessor implements EnvironmentPostProcessor {
private static final String PROPERTY_SOURCE_NAME = "defaultProperties";
diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/async/AsyncAutoConfiguration.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/async/AsyncAutoConfiguration.java
index 7a1f78500..c1f9cd875 100644
--- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/async/AsyncAutoConfiguration.java
+++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/async/AsyncAutoConfiguration.java
@@ -28,7 +28,10 @@ import org.springframework.context.annotation.Configuration;
*
* @author Jesus Alonso
* @since 2.1.0
+ * @deprecated This type should have never been public and will be hidden or removed in
+ * 3.0
*/
+@Deprecated
@Configuration(proxyBeanMethods = false)
@ConditionalOnProperty(value = "spring.sleuth.scheduled.enabled", matchIfMissing = true)
@EnableConfigurationProperties({ SleuthAsyncProperties.class,
diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/async/AsyncCustomAutoConfiguration.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/async/AsyncCustomAutoConfiguration.java
index 4a3904998..70aec549a 100644
--- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/async/AsyncCustomAutoConfiguration.java
+++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/async/AsyncCustomAutoConfiguration.java
@@ -35,7 +35,10 @@ import org.springframework.scheduling.annotation.AsyncConfigurer;
*
* @author Dave Syer
* @since 1.0.0
+ * @deprecated This type should have never been public and will be hidden or removed in
+ * 3.0
*/
+@Deprecated
@Configuration(proxyBeanMethods = false)
@ConditionalOnBean(AsyncConfigurer.class)
@AutoConfigureBefore(AsyncDefaultAutoConfiguration.class)
diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/async/AsyncDefaultAutoConfiguration.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/async/AsyncDefaultAutoConfiguration.java
index 41ef32689..cfee8fd8e 100644
--- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/async/AsyncDefaultAutoConfiguration.java
+++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/async/AsyncDefaultAutoConfiguration.java
@@ -52,7 +52,10 @@ import org.springframework.scheduling.annotation.AsyncConfigurerSupport;
* @since 1.0.0
* @see LazyTraceExecutor
* @see TraceAsyncAspect
+ * @deprecated This type should have never been public and will be hidden or removed in
+ * 3.0
*/
+@Deprecated
@Configuration(proxyBeanMethods = false)
@EnableConfigurationProperties({ SleuthAsyncProperties.class,
SleuthSchedulingProperties.class })
diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/async/LazyTraceAsyncCustomizer.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/async/LazyTraceAsyncCustomizer.java
index b107b59a0..76d35e539 100644
--- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/async/LazyTraceAsyncCustomizer.java
+++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/async/LazyTraceAsyncCustomizer.java
@@ -29,7 +29,10 @@ import org.springframework.scheduling.annotation.AsyncConfigurerSupport;
*
* @author Dave Syer
* @since 1.0.0
+ * @deprecated This type should have never been public and will be hidden or removed in
+ * 3.0
*/
+@Deprecated
public class LazyTraceAsyncCustomizer extends AsyncConfigurerSupport {
private final BeanFactory beanFactory;
diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/async/LazyTraceAsyncTaskExecutor.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/async/LazyTraceAsyncTaskExecutor.java
index ad7199d08..acd608f4e 100644
--- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/async/LazyTraceAsyncTaskExecutor.java
+++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/async/LazyTraceAsyncTaskExecutor.java
@@ -35,7 +35,10 @@ import org.springframework.core.task.AsyncTaskExecutor;
*
* @author Marcin Grzejszczak
* @since 2.1.0
+ * @deprecated This type should have never been public and will be hidden or removed in
+ * 3.0
*/
+@Deprecated
public class LazyTraceAsyncTaskExecutor implements AsyncTaskExecutor {
private static final Log log = LogFactory.getLog(LazyTraceAsyncTaskExecutor.class);
diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/async/LazyTraceExecutor.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/async/LazyTraceExecutor.java
index dc651db2e..3c86536a2 100644
--- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/async/LazyTraceExecutor.java
+++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/async/LazyTraceExecutor.java
@@ -32,7 +32,10 @@ import org.springframework.cloud.sleuth.SpanNamer;
*
* @author Dave Syer
* @since 1.0.0
+ * @deprecated This type should have never been public and will be hidden or removed in
+ * 3.0
*/
+@Deprecated
public class LazyTraceExecutor implements Executor {
private static final Log log = LogFactory.getLog(LazyTraceExecutor.class);
diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/async/LazyTraceThreadPoolTaskExecutor.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/async/LazyTraceThreadPoolTaskExecutor.java
index b97d79059..e29b62531 100644
--- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/async/LazyTraceThreadPoolTaskExecutor.java
+++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/async/LazyTraceThreadPoolTaskExecutor.java
@@ -39,7 +39,10 @@ import org.springframework.util.concurrent.ListenableFuture;
*
* @author Marcin Grzejszczak
* @since 1.0.10
+ * @deprecated This type should have never been public and will be hidden or removed in
+ * 3.0
*/
+@Deprecated
@SuppressWarnings("serial")
public class LazyTraceThreadPoolTaskExecutor extends ThreadPoolTaskExecutor {
diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/async/SleuthAsyncProperties.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/async/SleuthAsyncProperties.java
index 18d383a53..f84f0a456 100644
--- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/async/SleuthAsyncProperties.java
+++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/async/SleuthAsyncProperties.java
@@ -26,8 +26,10 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
*
* @author Jesus Alonso
* @since 2.1.0
+ * @deprecated This type should have never been public and will be hidden or removed in
+ * 3.0
*/
-
+@Deprecated
@ConfigurationProperties(prefix = "spring.sleuth.async")
public class SleuthAsyncProperties {
diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/async/TraceAsyncAspect.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/async/TraceAsyncAspect.java
index f14038e49..e173d6762 100644
--- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/async/TraceAsyncAspect.java
+++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/async/TraceAsyncAspect.java
@@ -36,7 +36,10 @@ import org.springframework.util.ReflectionUtils;
* @author Marcin Grzejszczak
* @since 1.0.0
* @see Tracer
+ * @deprecated This type should have never been public and will be hidden or removed in
+ * 3.0
*/
+@Deprecated
@Aspect
public class TraceAsyncAspect {
diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/async/TraceAsyncListenableTaskExecutor.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/async/TraceAsyncListenableTaskExecutor.java
index be8e94e0f..ff43a26a3 100644
--- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/async/TraceAsyncListenableTaskExecutor.java
+++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/async/TraceAsyncListenableTaskExecutor.java
@@ -32,7 +32,10 @@ import org.springframework.util.concurrent.ListenableFuture;
* @since 1.0.0
* @see brave.propagation.CurrentTraceContext#wrap(Runnable)
* @see brave.propagation.CurrentTraceContext#wrap(Callable)
+ * @deprecated This type should have never been public and will be hidden or removed in
+ * 3.0
*/
+@Deprecated
public class TraceAsyncListenableTaskExecutor implements AsyncListenableTaskExecutor {
private final AsyncListenableTaskExecutor delegate;
diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/async/TraceCallable.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/async/TraceCallable.java
index d7454d048..d7f5ba688 100644
--- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/async/TraceCallable.java
+++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/async/TraceCallable.java
@@ -33,7 +33,10 @@ import org.springframework.cloud.sleuth.SpanNamer;
* @author Spencer Gibb
* @author Marcin Grzejszczak
* @since 1.0.0
+ * @deprecated This type should have never been public and will be hidden or removed in
+ * 3.0
*/
+@Deprecated
public class TraceCallable implements Callable {
/**
diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/async/TraceRunnable.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/async/TraceRunnable.java
index ce838a096..5fa349143 100644
--- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/async/TraceRunnable.java
+++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/async/TraceRunnable.java
@@ -30,7 +30,10 @@ import org.springframework.cloud.sleuth.SpanNamer;
* @author Spencer Gibb
* @author Marcin Grzejszczak
* @since 1.0.0
+ * @deprecated This type should have never been public and will be hidden or removed in
+ * 3.0
*/
+@Deprecated
public class TraceRunnable implements Runnable {
/**
diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/async/TraceableExecutorService.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/async/TraceableExecutorService.java
index eb75d1d0d..f5a4edea4 100644
--- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/async/TraceableExecutorService.java
+++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/async/TraceableExecutorService.java
@@ -36,7 +36,10 @@ import org.springframework.cloud.sleuth.SpanNamer;
*
* @author Gaurav Rai Mazra
* @since 1.0.0
+ * @deprecated This type should have never been public and will be hidden or removed in
+ * 3.0
*/
+@Deprecated
public class TraceableExecutorService implements ExecutorService {
final ExecutorService delegate;
diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/async/TraceableScheduledExecutorService.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/async/TraceableScheduledExecutorService.java
index f5f391f58..936d1aa45 100644
--- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/async/TraceableScheduledExecutorService.java
+++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/async/TraceableScheduledExecutorService.java
@@ -29,7 +29,10 @@ import org.springframework.beans.factory.BeanFactory;
*
* @author Gaurav Rai Mazra
* @since 1.0.0
+ * @deprecated This type should have never been public and will be hidden or removed in
+ * 3.0
*/
+@Deprecated
public class TraceableScheduledExecutorService extends TraceableExecutorService
implements ScheduledExecutorService {
diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/circuitbreaker/SleuthCircuitBreakerAutoConfiguration.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/circuitbreaker/SleuthCircuitBreakerAutoConfiguration.java
index 95886d5c0..334cc01ec 100644
--- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/circuitbreaker/SleuthCircuitBreakerAutoConfiguration.java
+++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/circuitbreaker/SleuthCircuitBreakerAutoConfiguration.java
@@ -42,7 +42,10 @@ import org.springframework.context.annotation.Configuration;
*
* @author Marcin Grzejszczak
* @since 2.2.1
+ * @deprecated This type should have never been public and will be hidden or removed in
+ * 3.0
*/
+@Deprecated
@Configuration(proxyBeanMethods = false)
@AutoConfigureAfter(TraceAutoConfiguration.class)
@ConditionalOnClass(CircuitBreaker.class)
diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/circuitbreaker/SleuthCircuitBreakerProperties.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/circuitbreaker/SleuthCircuitBreakerProperties.java
index 1cb9665a7..a9614a2a6 100644
--- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/circuitbreaker/SleuthCircuitBreakerProperties.java
+++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/circuitbreaker/SleuthCircuitBreakerProperties.java
@@ -23,7 +23,10 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
*
* @author Marcin Grzejszczak
* @since 2.2.1
+ * @deprecated This type should have never been public and will be hidden or removed in
+ * 3.0
*/
+@Deprecated
@ConfigurationProperties("spring.sleuth.circuitbreaker")
public class SleuthCircuitBreakerProperties {
diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/circuitbreaker/TraceFunction.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/circuitbreaker/TraceFunction.java
index a450a2344..cc102fea0 100644
--- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/circuitbreaker/TraceFunction.java
+++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/circuitbreaker/TraceFunction.java
@@ -27,7 +27,10 @@ import brave.Tracer;
*
* @param type returned by the fallback
* @since 2.2.1
+ * @deprecated This type should have never been public and will be hidden or removed in
+ * 3.0
*/
+@Deprecated
public class TraceFunction implements Function {
private final Tracer tracer;
diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/circuitbreaker/TraceSupplier.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/circuitbreaker/TraceSupplier.java
index 2ca6b2633..79cccd07c 100644
--- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/circuitbreaker/TraceSupplier.java
+++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/circuitbreaker/TraceSupplier.java
@@ -27,7 +27,10 @@ import brave.Tracer;
*
* @param type returned by the supplier
* @since 2.2.1
+ * @deprecated This type should have never been public and will be hidden or removed in
+ * 3.0
*/
+@Deprecated
public class TraceSupplier implements Supplier {
private final Tracer tracer;
diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/grpc/SpringAwareManagedChannelBuilder.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/grpc/SpringAwareManagedChannelBuilder.java
index 7fcbdd537..749b3a444 100644
--- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/grpc/SpringAwareManagedChannelBuilder.java
+++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/grpc/SpringAwareManagedChannelBuilder.java
@@ -35,6 +35,7 @@ import io.grpc.inprocess.InProcessChannelBuilder;
*
* @author Tyler Van Gorder
*/
+// TODO: research why we need to continue to maintain this given current libraries
public class SpringAwareManagedChannelBuilder {
private List customizers;
diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/grpc/TraceGrpcAutoConfiguration.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/grpc/TraceGrpcAutoConfiguration.java
index 4b333dee1..1d0d7aea3 100644
--- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/grpc/TraceGrpcAutoConfiguration.java
+++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/grpc/TraceGrpcAutoConfiguration.java
@@ -40,7 +40,10 @@ import org.springframework.context.annotation.Bean;
* brave-instrumentation-grpc are on the classpath.
*
* @author Tyler Van Gorder
+ * @deprecated This type should have never been public and will be hidden or removed in
+ * 3.0
*/
+@Deprecated
@ConditionalOnClass({ GrpcTracing.class, GRpcGlobalInterceptor.class })
@ConditionalOnProperty(value = "spring.sleuth.grpc.enabled", matchIfMissing = true)
@ConditionalOnBean(RpcTracing.class)
diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/messaging/SleuthKafkaStreamsConfiguration.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/messaging/SleuthKafkaStreamsConfiguration.java
index 8570db8d9..a0b1654d4 100644
--- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/messaging/SleuthKafkaStreamsConfiguration.java
+++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/messaging/SleuthKafkaStreamsConfiguration.java
@@ -40,7 +40,10 @@ import org.springframework.kafka.config.StreamsBuilderFactoryBean;
* Auto-configuration} enables Kafka Streams span creation and reporting.
*
* @author Tim te Beek
+ * @deprecated This type should have never been public and will be hidden or removed in
+ * 3.0
*/
+@Deprecated
@Configuration(proxyBeanMethods = false)
@ConditionalOnBean(Tracing.class)
@AutoConfigureAfter({ TraceAutoConfiguration.class })
diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/messaging/SleuthMessagingProperties.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/messaging/SleuthMessagingProperties.java
index 80655caa9..fe7b6fc17 100644
--- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/messaging/SleuthMessagingProperties.java
+++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/messaging/SleuthMessagingProperties.java
@@ -23,7 +23,10 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
*
* @author Marcin Grzejszczak
* @since 2.0.0
+ * @deprecated This type should have never been public and will be hidden or removed in
+ * 3.0
*/
+@Deprecated
@ConfigurationProperties("spring.sleuth")
public class SleuthMessagingProperties {
diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/messaging/TraceMessagingAutoConfiguration.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/messaging/TraceMessagingAutoConfiguration.java
index 7746b9ca7..facc103c4 100644
--- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/messaging/TraceMessagingAutoConfiguration.java
+++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/messaging/TraceMessagingAutoConfiguration.java
@@ -77,7 +77,10 @@ import org.springframework.util.ReflectionUtils;
*
* @author Marcin Grzejszczak
* @since 2.0.0
+ * @deprecated This type should have never been public and will be hidden or removed in
+ * 3.0
*/
+@Deprecated
@Configuration(proxyBeanMethods = false)
@ConditionalOnBean(Tracing.class)
@ConditionalOnClass(MessagingTracing.class)
diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/messaging/TraceSpringIntegrationAutoConfiguration.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/messaging/TraceSpringIntegrationAutoConfiguration.java
index 92c4277ee..f2a8ea58f 100644
--- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/messaging/TraceSpringIntegrationAutoConfiguration.java
+++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/messaging/TraceSpringIntegrationAutoConfiguration.java
@@ -39,7 +39,10 @@ import org.springframework.messaging.support.MessageHeaderAccessor;
* @author Spencer Gibb
* @since 1.0.0
* @see TracingChannelInterceptor
+ * @deprecated This type should have never been public and will be hidden or removed in
+ * 3.0
*/
+@Deprecated
@Configuration(proxyBeanMethods = false)
@ConditionalOnClass(GlobalChannelInterceptor.class)
@ConditionalOnBean(Tracing.class)
diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/messaging/TracingChannelInterceptor.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/messaging/TracingChannelInterceptor.java
index 2317f5e5e..41f88da0b 100644
--- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/messaging/TracingChannelInterceptor.java
+++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/messaging/TracingChannelInterceptor.java
@@ -56,7 +56,10 @@ import org.springframework.util.ClassUtils;
* manipulation by other interceptors.
*
* @author Marcin Grzejszczak
+ * @deprecated This type should have never been public and will be hidden or removed in
+ * 3.0
*/
+@Deprecated
public final class TracingChannelInterceptor extends ChannelInterceptorAdapter
implements ExecutorChannelInterceptor {
diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/messaging/websocket/TraceWebSocketAutoConfiguration.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/messaging/websocket/TraceWebSocketAutoConfiguration.java
index a46019110..600c044b9 100644
--- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/messaging/websocket/TraceWebSocketAutoConfiguration.java
+++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/messaging/websocket/TraceWebSocketAutoConfiguration.java
@@ -37,7 +37,10 @@ import org.springframework.web.socket.config.annotation.StompEndpointRegistry;
* @author Dave Syer
* @since 1.0.0
* @see AbstractWebSocketMessageBrokerConfigurer
+ * @deprecated This type should have never been public and will be hidden or removed in
+ * 3.0
*/
+@Deprecated
@Configuration(proxyBeanMethods = false)
@ConditionalOnClass(DelegatingWebSocketMessageBrokerConfiguration.class)
@ConditionalOnBean(Tracing.class)
diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/opentracing/OpentracingAutoConfiguration.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/opentracing/OpentracingAutoConfiguration.java
index 17fa5edc4..6441b835c 100644
--- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/opentracing/OpentracingAutoConfiguration.java
+++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/opentracing/OpentracingAutoConfiguration.java
@@ -37,7 +37,10 @@ import org.springframework.context.annotation.Configuration;
* @author Spencer Gibb
* @author Marcin Grzejszczak
* @since 2.0.0
+ * @deprecated This type should have never been public and will be hidden or removed in
+ * 3.0
*/
+@Deprecated
@Configuration(proxyBeanMethods = false)
@ConditionalOnProperty(value = "spring.sleuth.opentracing.enabled", matchIfMissing = true)
@ConditionalOnBean(Tracing.class)
diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/opentracing/SleuthOpentracingProperties.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/opentracing/SleuthOpentracingProperties.java
index a23620242..2b01386da 100644
--- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/opentracing/SleuthOpentracingProperties.java
+++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/opentracing/SleuthOpentracingProperties.java
@@ -23,7 +23,10 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
*
* @author Marcin Grzejszczak
* @since 2.0.0
+ * @deprecated This type should have never been public and will be hidden or removed in
+ * 3.0
*/
+@Deprecated
@ConfigurationProperties("spring.sleuth.opentracing")
public class SleuthOpentracingProperties {
diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/quartz/TraceQuartzAutoConfiguration.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/quartz/TraceQuartzAutoConfiguration.java
index 58263b87d..630041ac8 100644
--- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/quartz/TraceQuartzAutoConfiguration.java
+++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/quartz/TraceQuartzAutoConfiguration.java
@@ -36,7 +36,10 @@ import org.springframework.context.annotation.Configuration;
*
* @author Branden Cash
* @since 2.2.0
+ * @deprecated This type should have never been public and will be hidden or removed in
+ * 3.0
*/
+@Deprecated
@Configuration(proxyBeanMethods = false)
@ConditionalOnBean({ Tracing.class, Scheduler.class })
@AutoConfigureAfter({ TraceAutoConfiguration.class, QuartzAutoConfiguration.class })
diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/reactor/ReactorSleuth.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/reactor/ReactorSleuth.java
index 48c70d442..5fd092220 100644
--- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/reactor/ReactorSleuth.java
+++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/reactor/ReactorSleuth.java
@@ -39,6 +39,8 @@ import org.springframework.context.ConfigurableApplicationContext;
* @author Stephane Maldini
* @since 2.0.0
*/
+// TODO: this is public as it is used out of package, but unlikely intended to be
+// non-internal
public abstract class ReactorSleuth {
private static final Log log = LogFactory.getLog(ReactorSleuth.class);
diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/reactor/SleuthReactorProperties.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/reactor/SleuthReactorProperties.java
index 5ad4bea31..9410ba0f6 100644
--- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/reactor/SleuthReactorProperties.java
+++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/reactor/SleuthReactorProperties.java
@@ -23,7 +23,10 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
*
* @author Marcin Grzejszczak
* @since 2.0.2
+ * @deprecated This type should have never been public and will be hidden or removed in
+ * 3.0
*/
+@Deprecated
@ConfigurationProperties("spring.sleuth.reactor")
public class SleuthReactorProperties {
diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/reactor/TraceReactorAutoConfiguration.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/reactor/TraceReactorAutoConfiguration.java
index 1f913ec08..87e0eb510 100644
--- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/reactor/TraceReactorAutoConfiguration.java
+++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/reactor/TraceReactorAutoConfiguration.java
@@ -55,7 +55,10 @@ import static org.springframework.cloud.sleuth.instrument.reactor.TraceReactorAu
* @author Stephane Maldini
* @author Marcin Grzejszczak
* @since 2.0.0
+ * @deprecated This type should have never been public and will be hidden or removed in
+ * 3.0
*/
+@Deprecated
@Configuration(proxyBeanMethods = false)
@ConditionalOnProperty(value = "spring.sleuth.reactor.enabled", matchIfMissing = true)
@ConditionalOnClass(Mono.class)
diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/redis/TraceRedisAutoConfiguration.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/redis/TraceRedisAutoConfiguration.java
index d78df8224..dd42c0a59 100644
--- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/redis/TraceRedisAutoConfiguration.java
+++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/redis/TraceRedisAutoConfiguration.java
@@ -39,7 +39,10 @@ import org.springframework.context.annotation.Configuration;
*
* @author Chao Chang
* @since 2.2.0
+ * @deprecated This type should have never been public and will be hidden or removed in
+ * 3.0
*/
+@Deprecated
@Configuration(proxyBeanMethods = false)
@ConditionalOnProperty(value = "spring.sleuth.redis.enabled", matchIfMissing = true)
@ConditionalOnBean({ Tracing.class, ClientResources.class })
diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/redis/TraceRedisProperties.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/redis/TraceRedisProperties.java
index 29e0235f3..23c44427d 100644
--- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/redis/TraceRedisProperties.java
+++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/redis/TraceRedisProperties.java
@@ -22,7 +22,10 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
* Sleuth Redis properties.
*
* @author Daniel Albuquerque
+ * @deprecated This type should have never been public and will be hidden or removed in
+ * 3.0
*/
+@Deprecated
@ConfigurationProperties("spring.sleuth.redis")
public class TraceRedisProperties {
diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/rpc/TraceRpcAutoConfiguration.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/rpc/TraceRpcAutoConfiguration.java
index 7ce6b59cc..f92f748af 100644
--- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/rpc/TraceRpcAutoConfiguration.java
+++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/rpc/TraceRpcAutoConfiguration.java
@@ -41,7 +41,10 @@ import org.springframework.lang.Nullable;
* Auto-configuration} related to RPC based communication.
*
* @since 2.2.0
+ * @deprecated This type should have never been public and will be hidden or removed in
+ * 3.0
*/
+@Deprecated
@Configuration(proxyBeanMethods = false)
@ConditionalOnProperty(name = "spring.sleuth.rpc.enabled", havingValue = "true",
matchIfMissing = true)
diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/rxjava/RxJavaAutoConfiguration.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/rxjava/RxJavaAutoConfiguration.java
index f721b83f4..1dce36d67 100644
--- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/rxjava/RxJavaAutoConfiguration.java
+++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/rxjava/RxJavaAutoConfiguration.java
@@ -37,7 +37,10 @@ import org.springframework.context.annotation.Configuration;
*
* @author Shivang Shah
* @since 1.0.0
+ * @deprecated This type should have never been public and will be hidden or removed in
+ * 3.0
*/
+@Deprecated
@Configuration(proxyBeanMethods = false)
@AutoConfigureAfter(TraceAutoConfiguration.class)
@ConditionalOnBean(Tracing.class)
diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/rxjava/SleuthRxJavaSchedulersProperties.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/rxjava/SleuthRxJavaSchedulersProperties.java
index f32a7ccf6..88d0c0760 100644
--- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/rxjava/SleuthRxJavaSchedulersProperties.java
+++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/rxjava/SleuthRxJavaSchedulersProperties.java
@@ -23,7 +23,10 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
*
* @author Arthur Gavlyukovskiy
* @since 1.0.12
+ * @deprecated This type should have never been public and will be hidden or removed in
+ * 3.0
*/
+@Deprecated
@ConfigurationProperties("spring.sleuth.rxjava.schedulers")
public class SleuthRxJavaSchedulersProperties {
diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/scheduling/SleuthSchedulingProperties.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/scheduling/SleuthSchedulingProperties.java
index 6044b7999..905bcb520 100644
--- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/scheduling/SleuthSchedulingProperties.java
+++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/scheduling/SleuthSchedulingProperties.java
@@ -24,7 +24,10 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
*
* @author Arthur Gavlyukovskiy
* @since 1.0.12
+ * @deprecated This type should have never been public and will be hidden or removed in
+ * 3.0
*/
+@Deprecated
@ConfigurationProperties("spring.sleuth.scheduled")
public class SleuthSchedulingProperties {
diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/scheduling/TraceSchedulingAspect.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/scheduling/TraceSchedulingAspect.java
index d4380d44a..f9a9026b0 100644
--- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/scheduling/TraceSchedulingAspect.java
+++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/scheduling/TraceSchedulingAspect.java
@@ -41,7 +41,10 @@ import org.springframework.lang.Nullable;
* @author Spencer Gibb
* @since 1.0.0
* @see Tracing
+ * @deprecated This type should have never been public and will be hidden or removed in
+ * 3.0
*/
+@Deprecated
@Aspect
public class TraceSchedulingAspect {
diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/scheduling/TraceSchedulingAutoConfiguration.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/scheduling/TraceSchedulingAutoConfiguration.java
index afff9e4d6..faf7ce6fb 100644
--- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/scheduling/TraceSchedulingAutoConfiguration.java
+++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/scheduling/TraceSchedulingAutoConfiguration.java
@@ -37,7 +37,10 @@ import org.springframework.context.annotation.Configuration;
* @author Spencer Gibb
* @since 1.0.0
* @see TraceSchedulingAspect
+ * @deprecated This type should have never been public and will be hidden or removed in
+ * 3.0
*/
+@Deprecated
@Configuration(proxyBeanMethods = false)
@ConditionalOnClass(name = "org.aspectj.lang.ProceedingJoinPoint")
@ConditionalOnProperty(value = "spring.sleuth.scheduled.enabled", matchIfMissing = true)
diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/ExceptionLoggingFilter.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/ExceptionLoggingFilter.java
index 3601994bd..a18a476df 100644
--- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/ExceptionLoggingFilter.java
+++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/ExceptionLoggingFilter.java
@@ -29,11 +29,9 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
/**
- * Filter running after {@link brave.servlet.TracingFilter} that logs uncaught exceptions.
- *
- * @author Marcin Grzejszczak
- * @since 2.0.0
+ * @deprecated Since 2.2.3 this is disabled by default and will be removed in 3.0
*/
+@Deprecated
class ExceptionLoggingFilter implements Filter {
private static final Log log = LogFactory.getLog(ExceptionLoggingFilter.class);
diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/SleuthWebProperties.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/SleuthWebProperties.java
index d377059ae..8d577354e 100644
--- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/SleuthWebProperties.java
+++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/SleuthWebProperties.java
@@ -24,7 +24,10 @@ import org.springframework.boot.context.properties.NestedConfigurationProperty;
*
* @author Arthur Gavlyukovskiy
* @since 1.0.12
+ * @deprecated This type should have never been public and will be hidden or removed in
+ * 3.0
*/
+@Deprecated
@ConfigurationProperties("spring.sleuth.web")
public class SleuthWebProperties {
diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/TraceHttpAutoConfiguration.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/TraceHttpAutoConfiguration.java
index 7d3e97752..200493dd0 100644
--- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/TraceHttpAutoConfiguration.java
+++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/TraceHttpAutoConfiguration.java
@@ -45,7 +45,10 @@ import org.springframework.lang.Nullable;
*
* @author Marcin Grzejszczak
* @since 2.0.0
+ * @deprecated This type should have never been public and will be hidden or removed in
+ * 3.0
*/
+@Deprecated
@Configuration(proxyBeanMethods = false)
@ConditionalOnBean(TraceWebAutoConfiguration.class)
@ConditionalOnProperty(name = "spring.sleuth.http.enabled", havingValue = "true",
diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/TraceWebAspect.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/TraceWebAspect.java
index b77955644..cbebbc6e6 100644
--- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/TraceWebAspect.java
+++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/TraceWebAspect.java
@@ -51,7 +51,10 @@ import org.springframework.web.context.request.async.WebAsyncTask;
* @since 1.0.0
* @see org.springframework.stereotype.Controller
* @see org.springframework.web.client.RestOperations
+ * @deprecated This type should have never been public and will be hidden or removed in
+ * 3.0
*/
+@Deprecated
@SuppressWarnings("ArgNamesWarningsInspection")
@Aspect
public class TraceWebAspect {
diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/TraceWebAutoConfiguration.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/TraceWebAutoConfiguration.java
index 5222c7f13..98e7ca8eb 100644
--- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/TraceWebAutoConfiguration.java
+++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/TraceWebAutoConfiguration.java
@@ -53,7 +53,10 @@ import org.springframework.util.StringUtils;
* @author Marcin Grzejszczak
* @author Tim Ysewyn
* @since 1.0.0
+ * @deprecated This type should have never been public and will be hidden or removed in
+ * 3.0
*/
+@Deprecated
@Configuration(proxyBeanMethods = false)
@ConditionalOnProperty(value = "spring.sleuth.web.enabled", matchIfMissing = true)
@ConditionalOnBean(Tracing.class)
diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/TraceWebFilter.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/TraceWebFilter.java
index d92d8683f..8b04803c8 100644
--- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/TraceWebFilter.java
+++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/TraceWebFilter.java
@@ -51,7 +51,10 @@ import org.springframework.web.server.WebFilterChain;
*
* @author Marcin Grzejszczak
* @since 2.0.0
+ * @deprecated This type should have never been public and will be hidden or removed in
+ * 3.0
*/
+@Deprecated
public final class TraceWebFilter implements WebFilter, Ordered {
/**
diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/TraceWebFluxAutoConfiguration.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/TraceWebFluxAutoConfiguration.java
index 3a78d34bc..98681504a 100644
--- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/TraceWebFluxAutoConfiguration.java
+++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/TraceWebFluxAutoConfiguration.java
@@ -32,7 +32,10 @@ import org.springframework.context.annotation.Configuration;
*
* @author Marcin Grzejszczak
* @since 2.0.0
+ * @deprecated This type should have never been public and will be hidden or removed in
+ * 3.0
*/
+@Deprecated
@Configuration(proxyBeanMethods = false)
@ConditionalOnProperty(value = "spring.sleuth.web.enabled", matchIfMissing = true)
@ConditionalOnWebApplication(type = ConditionalOnWebApplication.Type.REACTIVE)
diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/TraceWebServletAutoConfiguration.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/TraceWebServletAutoConfiguration.java
index d39a71a69..f5a71efba 100644
--- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/TraceWebServletAutoConfiguration.java
+++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/TraceWebServletAutoConfiguration.java
@@ -52,7 +52,10 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
* @author Marcin Grzejszczak
* @author Spencer Gibb
* @since 1.0.0
+ * @deprecated This type should have never been public and will be hidden or removed in
+ * 3.0
*/
+@Deprecated
@Configuration(proxyBeanMethods = false)
@ConditionalOnProperty(value = "spring.sleuth.web.enabled", matchIfMissing = true)
@ConditionalOnWebApplication(type = ConditionalOnWebApplication.Type.SERVLET)
@@ -83,10 +86,8 @@ public class TraceWebServletAutoConfiguration {
return filterRegistrationBean;
}
- // TODO: Rename to exception-logging-filter for 3.0
@Bean
- @ConditionalOnProperty(value = "spring.sleuth.web.exception-logging-filter-enabled",
- matchIfMissing = true)
+ @ConditionalOnProperty("spring.sleuth.web.exception-logging-filter-enabled")
public FilterRegistrationBean exceptionThrowingFilter(
SleuthWebProperties webProperties) {
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(
diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/client/TraceWebAsyncClientAutoConfiguration.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/client/TraceWebAsyncClientAutoConfiguration.java
index c7dad35fe..3b21c5c3a 100644
--- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/client/TraceWebAsyncClientAutoConfiguration.java
+++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/client/TraceWebAsyncClientAutoConfiguration.java
@@ -44,7 +44,10 @@ import org.springframework.web.client.AsyncRestTemplate;
*
* @author Marcin Grzejszczak
* @since 1.0.0
+ * @deprecated This type should have never been public and will be hidden or removed in
+ * 3.0
*/
+@Deprecated
@Configuration(proxyBeanMethods = false)
@SleuthWebClientEnabled
@ConditionalOnProperty(value = "spring.sleuth.web.async.client.enabled",
diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/client/TraceWebClientAutoConfiguration.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/client/TraceWebClientAutoConfiguration.java
index bb59752b7..725388453 100644
--- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/client/TraceWebClientAutoConfiguration.java
+++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/client/TraceWebClientAutoConfiguration.java
@@ -62,7 +62,10 @@ import org.springframework.web.reactive.function.client.WebClient;
*
* @author Marcin Grzejszczak
* @since 1.0.0
+ * @deprecated This type should have never been public and will be hidden or removed in
+ * 3.0
*/
+@Deprecated
@Configuration(proxyBeanMethods = false)
@SleuthWebClientEnabled
@ConditionalOnBean(HttpTracing.class)
diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/client/feign/NeverRetry.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/client/feign/NeverRetry.java
index 0683d3dad..cdc3fb913 100644
--- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/client/feign/NeverRetry.java
+++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/client/feign/NeverRetry.java
@@ -24,7 +24,9 @@ import feign.Retryer;
* Feign. For the 1.0.x stream we add it here.
*
* @author Ryan Baxter
+ * @deprecated This type will be removed in 3.0
*/
+@Deprecated
public class NeverRetry implements Retryer {
/**
diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/client/feign/SleuthFeignProperties.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/client/feign/SleuthFeignProperties.java
index 6762d643e..006793ba2 100644
--- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/client/feign/SleuthFeignProperties.java
+++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/client/feign/SleuthFeignProperties.java
@@ -23,7 +23,10 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
*
* @author Marcin Grzejszczak
* @since 2.0.2
+ * @deprecated This type should have never been public and will be hidden or removed in
+ * 3.0
*/
+@Deprecated
@ConfigurationProperties("spring.sleuth.feign")
public class SleuthFeignProperties {
diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/client/feign/TraceFeignBlockingLoadBalancerClient.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/client/feign/TraceFeignBlockingLoadBalancerClient.java
index 61f381b38..de20da0a5 100644
--- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/client/feign/TraceFeignBlockingLoadBalancerClient.java
+++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/client/feign/TraceFeignBlockingLoadBalancerClient.java
@@ -37,7 +37,10 @@ import org.springframework.cloud.openfeign.loadbalancer.FeignBlockingLoadBalance
* @author Olga Maciaszek-Sharma
* @since 2.2.0
* @see FeignBlockingLoadBalancerClient
+ * @deprecated This type should have never been public and will be hidden or removed in
+ * 3.0
*/
+@Deprecated
public class TraceFeignBlockingLoadBalancerClient
extends FeignBlockingLoadBalancerClient {
diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/client/feign/TraceFeignClientAutoConfiguration.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/client/feign/TraceFeignClientAutoConfiguration.java
index c9bed404b..60591d763 100644
--- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/client/feign/TraceFeignClientAutoConfiguration.java
+++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/client/feign/TraceFeignClientAutoConfiguration.java
@@ -41,7 +41,10 @@ import org.springframework.context.annotation.Scope;
*
* @author Marcin Grzejszczak
* @since 1.0.0
+ * @deprecated This type should have never been public and will be hidden or removed in
+ * 3.0
*/
+@Deprecated
@Configuration(proxyBeanMethods = false)
@ConditionalOnProperty(value = "spring.sleuth.feign.enabled", matchIfMissing = true)
@ConditionalOnClass({ Client.class, FeignContext.class })
diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/sampler/ProbabilityBasedSampler.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/sampler/ProbabilityBasedSampler.java
index e141d8d68..916229cbf 100644
--- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/sampler/ProbabilityBasedSampler.java
+++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/sampler/ProbabilityBasedSampler.java
@@ -42,7 +42,10 @@ import org.springframework.util.Assert;
* @author Marcin Grzejszczak
* @author Adrian Cole
* @since 1.0.0
+ * @deprecated This type should have never been public and will be hidden or removed in
+ * 3.0
*/
+@Deprecated
public class ProbabilityBasedSampler extends Sampler {
private final AtomicInteger counter = new AtomicInteger(0);
diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/sampler/SamplerAutoConfiguration.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/sampler/SamplerAutoConfiguration.java
index 473fbdd5e..9a91461df 100644
--- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/sampler/SamplerAutoConfiguration.java
+++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/sampler/SamplerAutoConfiguration.java
@@ -33,7 +33,10 @@ import org.springframework.context.annotation.Configuration;
* @author Marcin Grzejszczak
* @see SamplerCondition
* @since 2.1.0
+ * @deprecated This type should have never been public and will be hidden or removed in
+ * 3.0
*/
+@Deprecated
@Configuration(proxyBeanMethods = false)
@EnableConfigurationProperties(SamplerProperties.class)
// This is not auto-configuration, but it was in the past. Leaving the name as
diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/sampler/SamplerCondition.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/sampler/SamplerCondition.java
index 77c6164d9..5c50c3113 100644
--- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/sampler/SamplerCondition.java
+++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/sampler/SamplerCondition.java
@@ -17,7 +17,7 @@
package org.springframework.cloud.sleuth.sampler;
import brave.TracingCustomizer;
-import brave.handler.FinishedSpanHandler;
+import brave.handler.SpanHandler;
import brave.sampler.Sampler;
import org.springframework.boot.autoconfigure.condition.AnyNestedCondition;
@@ -48,7 +48,7 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
*
* - {@code zipkin2.reporter.Reporter} - what's used by Zipkin or others like
* Stackdriver
- * - {@link FinishedSpanHandler} - only accepts sampled data
+ * - {@link SpanHandler} - only accepts sampled data
* - {@link TracingCustomizer} - can configure one of the above
*
*
@@ -69,8 +69,8 @@ final class SamplerCondition extends AnyNestedCondition {
}
- @ConditionalOnBean(FinishedSpanHandler.class)
- static final class FinishedSpanHandlerAvailable {
+ @ConditionalOnBean(SpanHandler.class)
+ static final class SpanHandlerAvailable {
}
diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/sampler/SamplerProperties.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/sampler/SamplerProperties.java
index 066655a64..0808077ec 100644
--- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/sampler/SamplerProperties.java
+++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/sampler/SamplerProperties.java
@@ -24,7 +24,10 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
* @author Marcin Grzejszczak
* @author Adrian Cole
* @since 1.0.0
+ * @deprecated This type should have never been public and will be hidden or removed in
+ * 3.0
*/
+@Deprecated
@ConfigurationProperties("spring.sleuth.sampler")
public class SamplerProperties {
diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/util/ArrayListSpanReporter.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/util/ArrayListSpanReporter.java
index 321fa52ad..14eccc356 100644
--- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/util/ArrayListSpanReporter.java
+++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/util/ArrayListSpanReporter.java
@@ -27,7 +27,9 @@ import zipkin2.reporter.Reporter;
*
* @author Marcin Grzejszczak
* @since 2.0.0
+ * @deprecated This type will be removed in 3.0. Use io.zipkin.brave:brave-tests instead
*/
+@Deprecated
public class ArrayListSpanReporter implements Reporter {
private final List spans = new ArrayList<>();
diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/util/SpanNameUtil.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/util/SpanNameUtil.java
index e1737c3c6..42cc78148 100644
--- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/util/SpanNameUtil.java
+++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/util/SpanNameUtil.java
@@ -23,7 +23,9 @@ import org.springframework.util.StringUtils;
*
* @author Adrian Cole
* @since 1.0.2
+ * @deprecated This type should have been internal. It will be hidden or removed in 3.0
*/
+@Deprecated
public final class SpanNameUtil {
static final int MAX_NAME_LENGTH = 50;
diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/jms/config/TracingJmsListenerEndpointRegistry.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/jms/config/TracingJmsListenerEndpointRegistry.java
index c0088eaf0..3a93bacbc 100644
--- a/spring-cloud-sleuth-core/src/main/java/org/springframework/jms/config/TracingJmsListenerEndpointRegistry.java
+++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/jms/config/TracingJmsListenerEndpointRegistry.java
@@ -46,7 +46,10 @@ import org.springframework.lang.Nullable;
*
* @author Marcin Grzejszczak
* @since 2.1.1
+ * @deprecated This type should have never been public and will be hidden or removed in
+ * 3.0
*/
+@Deprecated
public final class TracingJmsListenerEndpointRegistry
extends JmsListenerEndpointRegistry {
diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/FinishedSpanHandlerTests.java b/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/SpanHandlerTests.java
similarity index 80%
rename from spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/FinishedSpanHandlerTests.java
rename to spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/SpanHandlerTests.java
index 46e6d1528..85cf3f5f5 100644
--- a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/FinishedSpanHandlerTests.java
+++ b/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/SpanHandlerTests.java
@@ -18,8 +18,8 @@ package org.springframework.cloud.sleuth;
import brave.Span;
import brave.Tracer;
-import brave.handler.FinishedSpanHandler;
import brave.handler.MutableSpan;
+import brave.handler.SpanHandler;
import brave.propagation.TraceContext;
import brave.sampler.Sampler;
import org.assertj.core.api.BDDAssertions;
@@ -40,10 +40,9 @@ import static org.springframework.boot.test.context.SpringBootTest.WebEnvironmen
/**
* @author Marcin Grzejszczak
*/
-@SpringBootTest(
- classes = FinishedSpanHandlerTests.FinishedSpanHandlerAspectTestsConfig.class,
+@SpringBootTest(classes = SpanHandlerTests.SpanHandlerAspectTestsConfig.class,
webEnvironment = NONE)
-public class FinishedSpanHandlerTests {
+public class SpanHandlerTests {
@Autowired
ArrayListSpanReporter reporter;
@@ -68,7 +67,7 @@ public class FinishedSpanHandlerTests {
@Configuration
@EnableAutoConfiguration(exclude = IntegrationAutoConfiguration.class)
- static class FinishedSpanHandlerAspectTestsConfig {
+ static class SpanHandlerAspectTestsConfig {
@Bean
Sampler sampler() {
@@ -80,12 +79,13 @@ public class FinishedSpanHandlerTests {
return new ArrayListSpanReporter();
}
- // tag::finishedSpanHandler[]
+ // tag::spanHandler[]
@Bean
- FinishedSpanHandler handlerOne() {
- return new FinishedSpanHandler() {
+ SpanHandler handlerOne() {
+ return new SpanHandler() {
@Override
- public boolean handle(TraceContext traceContext, MutableSpan span) {
+ public boolean end(TraceContext traceContext, MutableSpan span,
+ Cause cause) {
span.name("foo");
return true; // keep this span
}
@@ -93,16 +93,17 @@ public class FinishedSpanHandlerTests {
}
@Bean
- FinishedSpanHandler handlerTwo() {
- return new FinishedSpanHandler() {
+ SpanHandler handlerTwo() {
+ return new SpanHandler() {
@Override
- public boolean handle(TraceContext traceContext, MutableSpan span) {
+ public boolean end(TraceContext traceContext, MutableSpan span,
+ Cause cause) {
span.name(span.name() + " bar");
return true; // keep this span
}
};
}
- // end::finishedSpanHandler[]
+ // end::spanHandler[]
}
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 2428cf916..d92721dcc 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
@@ -19,6 +19,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;
@@ -34,14 +35,20 @@ import org.springframework.context.support.GenericApplicationContext;
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));
@Test
public void stillCreatesDefault() {
this.contextRunner.run((context) -> {
- BDDAssertions.then(context.getBean(Tracing.class).propagation())
- .isInstanceOf(B3Propagation.class);
+ BDDAssertions.then(context.getBean(Propagation.Factory.class))
+ .isEqualTo(defaultB3Propagation);
});
}
@@ -60,7 +67,7 @@ public class TraceAutoConfigurationPropagationCustomizationTests {
this.contextRunner.withPropertyValues("spring.application.name=")
.run((context) -> {
BDDAssertions.then(context.getBean(Tracing.class).propagation())
- .isInstanceOf(B3Propagation.class);
+ .isEqualTo(defaultB3Propagation);
});
}
diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/baggage/TraceBaggageConfigurationTests.java b/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/baggage/TraceBaggageConfigurationTests.java
index 52f66aa3a..2f61050a3 100644
--- a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/baggage/TraceBaggageConfigurationTests.java
+++ b/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/baggage/TraceBaggageConfigurationTests.java
@@ -70,9 +70,8 @@ public class TraceBaggageConfigurationTests {
static ListAssert assertThatBaggageFieldNameToKeyNames(
AssertableApplicationContext context) {
return assertThat(context.getBean(Propagation.Factory.class))
- .extracting("handlersWithKeyNames")
- .asInstanceOf(InstanceOfAssertFactories.ARRAY)
- .extracting("handler.field.name", "keyNames")
+ .extracting("configs").asInstanceOf(InstanceOfAssertFactories.ARRAY)
+ .extracting("field.name", "keyNames.toArray")
.asInstanceOf(InstanceOfAssertFactories.list(Tuple.class));
}
diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/sampler/SamplerAutoConfigurationTests.java b/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/sampler/SamplerAutoConfigurationTests.java
index c9cf66dee..eea86834d 100644
--- a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/sampler/SamplerAutoConfigurationTests.java
+++ b/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/sampler/SamplerAutoConfigurationTests.java
@@ -18,8 +18,8 @@ package org.springframework.cloud.sleuth.sampler;
import brave.Tracing;
import brave.TracingCustomizer;
-import brave.handler.FinishedSpanHandler;
import brave.handler.MutableSpan;
+import brave.handler.SpanHandler;
import brave.propagation.TraceContext;
import brave.sampler.RateLimitingSampler;
import brave.sampler.Sampler;
@@ -52,12 +52,11 @@ public class SamplerAutoConfigurationTests {
}
@Test
- void should_use_RateLimitedSampler_withFinishedSpanHandler() {
- this.contextRunner.withUserConfiguration(WithFinishedSpanHandler.class)
- .run((context -> {
- final Sampler bean = context.getBean(Sampler.class);
- BDDAssertions.then(bean).isInstanceOf(RateLimitingSampler.class);
- }));
+ void should_use_RateLimitedSampler_withSpanHandler() {
+ this.contextRunner.withUserConfiguration(WithSpanHandler.class).run((context -> {
+ final Sampler bean = context.getBean(Sampler.class);
+ BDDAssertions.then(bean).isInstanceOf(RateLimitingSampler.class);
+ }));
}
@Test
@@ -138,13 +137,13 @@ public class SamplerAutoConfigurationTests {
}
@Configuration
- static class WithFinishedSpanHandler {
+ static class WithSpanHandler {
@Bean
- FinishedSpanHandler finishedSpanHandler() {
- return new FinishedSpanHandler() {
+ SpanHandler spanHandler() {
+ return new SpanHandler() {
@Override
- public boolean handle(TraceContext context, MutableSpan span) {
+ public boolean end(TraceContext context, MutableSpan span, Cause cause) {
return true;
}
};
diff --git a/spring-cloud-sleuth-dependencies/pom.xml b/spring-cloud-sleuth-dependencies/pom.xml
index fbfd11a4d..09e0a3054 100644
--- a/spring-cloud-sleuth-dependencies/pom.xml
+++ b/spring-cloud-sleuth-dependencies/pom.xml
@@ -31,8 +31,8 @@
spring-cloud-sleuth-dependencies
Spring Cloud Sleuth Dependencies
- 5.11.2
- 0.36.2
+ 5.12.0
+ 0.37.0
3.4.1
@@ -69,6 +69,12 @@
io.opentracing.brave
brave-opentracing
${brave.opentracing.version}
+
+
+ io.zipkin.brave
+ *
+
+
diff --git a/spring-cloud-sleuth-samples/pom.xml b/spring-cloud-sleuth-samples/pom.xml
index 4b4618761..b948fcb38 100644
--- a/spring-cloud-sleuth-samples/pom.xml
+++ b/spring-cloud-sleuth-samples/pom.xml
@@ -69,11 +69,6 @@
spring-cloud-sleuth-sample-test-core
${project.version}
-
- io.zipkin.zipkin2
- zipkin
- 2.19.3
-
diff --git a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-test-core/pom.xml b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-test-core/pom.xml
index 9138f16b0..091e34851 100644
--- a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-test-core/pom.xml
+++ b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-test-core/pom.xml
@@ -105,10 +105,6 @@
awaitility
compile
-
- io.zipkin.zipkin2
- zipkin
-
io.projectreactor
reactor-core
diff --git a/spring-cloud-sleuth-zipkin/pom.xml b/spring-cloud-sleuth-zipkin/pom.xml
index d376edb25..045066dbe 100644
--- a/spring-cloud-sleuth-zipkin/pom.xml
+++ b/spring-cloud-sleuth-zipkin/pom.xml
@@ -79,6 +79,10 @@
io.zipkin.reporter2
zipkin-reporter
+
+ io.zipkin.reporter2
+ zipkin-reporter-brave
+
io.zipkin.reporter2
zipkin-sender-kafka
diff --git a/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin2/DefaultEndpointLocator.java b/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin2/DefaultEndpointLocator.java
index ebeef7c32..0227a834d 100644
--- a/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin2/DefaultEndpointLocator.java
+++ b/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin2/DefaultEndpointLocator.java
@@ -41,7 +41,10 @@ import org.springframework.util.StringUtils;
*
* @author Dave Syer
* @since 1.0.0
+ * @deprecated This type should have never been public and will be hidden or removed in
+ * 3.0
*/
+@Deprecated
public class DefaultEndpointLocator implements EndpointLocator,
ApplicationListener {
diff --git a/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin2/DefaultZipkinRestTemplateCustomizer.java b/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin2/DefaultZipkinRestTemplateCustomizer.java
index ecea5115f..f26d5f4fd 100644
--- a/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin2/DefaultZipkinRestTemplateCustomizer.java
+++ b/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin2/DefaultZipkinRestTemplateCustomizer.java
@@ -32,7 +32,10 @@ import org.springframework.web.client.RestTemplate;
*
* @author Marcin Grzejszczak
* @since 1.1.0
+ * @deprecated This type should have never been public and will be hidden or removed in
+ * 3.0
*/
+@Deprecated
public class DefaultZipkinRestTemplateCustomizer implements ZipkinRestTemplateCustomizer {
private final ZipkinProperties zipkinProperties;
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 df110882c..84fe4e3d2 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
@@ -16,11 +16,8 @@
package org.springframework.cloud.sleuth.zipkin2;
-import java.util.concurrent.Callable;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -63,7 +60,10 @@ import org.springframework.web.client.RestTemplate;
* @since 1.0.0
* @see ZipkinRestTemplateCustomizer
* @see DefaultZipkinRestTemplateCustomizer
+ * @deprecated This type should have never been public and will be hidden or removed in
+ * 3.0
*/
+@Deprecated
@Configuration(proxyBeanMethods = false)
@EnableConfigurationProperties(ZipkinProperties.class)
@ConditionalOnProperty(value = { "spring.sleuth.enabled", "spring.zipkin.enabled" },
@@ -92,43 +92,56 @@ public class ZipkinAutoConfiguration {
@ConditionalOnMissingBean(name = REPORTER_BEAN_NAME)
public Reporter reporter(ReporterMetrics reporterMetrics,
ZipkinProperties zipkin, @Qualifier(SENDER_BEAN_NAME) Sender sender) {
+ CheckResult checkResult = checkResult(sender, 1_000L);
+ logCheckResult(sender, checkResult);
+
// historical constraint. Note: AsyncReporter supports memory bounds
AsyncReporter asyncReporter = AsyncReporter.builder(sender)
.queuedMaxSpans(1000)
.messageTimeout(zipkin.getMessageTimeout(), TimeUnit.SECONDS)
.metrics(reporterMetrics).build(zipkin.getEncoder());
- CheckResult checkResult = checkResult(asyncReporter);
- logCheckResult(asyncReporter, checkResult);
+
return asyncReporter;
}
- private void logCheckResult(AsyncReporter asyncReporter, CheckResult checkResult) {
+ private void logCheckResult(Sender sender, CheckResult checkResult) {
if (log.isDebugEnabled() && checkResult != null && checkResult.ok()) {
- log.debug("Check result of the [" + asyncReporter.toString() + "] is ["
- + checkResult + "]");
+ log.debug("Check result of the [" + sender.toString() + "] is [" + checkResult
+ + "]");
}
else if (checkResult != null && !checkResult.ok()) {
- log.warn("Check result of the [" + asyncReporter.toString()
- + "] contains an error [" + checkResult + "]");
+ log.warn("Check result of the [" + sender.toString() + "] contains an error ["
+ + checkResult + "]");
}
}
- private CheckResult checkResult(AsyncReporter asyncReporter) {
- ExecutorService executor = Executors.newSingleThreadExecutor();
- Callable task = asyncReporter::check;
- Future future = executor.submit(task);
+ /** Limits {@link Sender#check()} to {@code deadlineMillis}. */
+ static CheckResult checkResult(Sender sender, long deadlineMillis) {
+ CheckResult[] outcome = new CheckResult[1];
+ Thread thread = new Thread(sender + " check()") {
+ @Override
+ public void run() {
+ try {
+ outcome[0] = sender.check();
+ }
+ catch (Throwable e) {
+ outcome[0] = CheckResult.failed(e);
+ }
+ }
+ };
+ thread.start();
try {
- return future.get(1, TimeUnit.SECONDS);
+ thread.join(deadlineMillis);
+ if (outcome[0] != null) {
+ return outcome[0];
+ }
+ thread.interrupt();
+ return CheckResult.failed(new TimeoutException(
+ thread.getName() + " timed out after " + deadlineMillis + "ms"));
}
- catch (Exception ex) {
- log.warn(
- "An exception took place when trying to retrieve the check result. Will return null.",
- ex);
- return null;
- }
- finally {
- future.cancel(true);
- executor.shutdown();
+ catch (InterruptedException e) {
+ Thread.currentThread().interrupt();
+ return CheckResult.failed(e);
}
}
diff --git a/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin2/ZipkinProperties.java b/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin2/ZipkinProperties.java
index 0b69da5ac..08c5f88c6 100644
--- a/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin2/ZipkinProperties.java
+++ b/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin2/ZipkinProperties.java
@@ -25,7 +25,10 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
*
* @author Spencer Gibb
* @since 1.0.0
+ * @deprecated This type should have never been public and will be hidden or removed in
+ * 3.0
*/
+@Deprecated
@ConfigurationProperties("spring.zipkin")
public class ZipkinProperties {
diff --git a/spring-cloud-sleuth-zipkin/src/test/java/org/springframework/cloud/sleuth/zipkin2/ZipkinAutoConfigurationTests.java b/spring-cloud-sleuth-zipkin/src/test/java/org/springframework/cloud/sleuth/zipkin2/ZipkinAutoConfigurationTests.java
index 7c1980ce3..9464fe051 100644
--- a/spring-cloud-sleuth-zipkin/src/test/java/org/springframework/cloud/sleuth/zipkin2/ZipkinAutoConfigurationTests.java
+++ b/spring-cloud-sleuth-zipkin/src/test/java/org/springframework/cloud/sleuth/zipkin2/ZipkinAutoConfigurationTests.java
@@ -18,11 +18,12 @@ package org.springframework.cloud.sleuth.zipkin2;
import java.io.IOException;
import java.util.List;
+import java.util.concurrent.TimeoutException;
import brave.Span;
import brave.Tracing;
-import brave.handler.FinishedSpanHandler;
import brave.handler.MutableSpan;
+import brave.handler.SpanHandler;
import brave.propagation.TraceContext;
import brave.sampler.Sampler;
import okhttp3.mockwebserver.MockWebServer;
@@ -32,6 +33,7 @@ import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import zipkin2.Call;
+import zipkin2.CheckResult;
import zipkin2.codec.Encoding;
import zipkin2.reporter.AsyncReporter;
import zipkin2.reporter.Reporter;
@@ -51,7 +53,10 @@ import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.mock.env.MockEnvironment;
+import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.BDDAssertions.then;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
/**
* Not using {@linkplain SpringBootTest} as we need to change properties per test.
@@ -293,6 +298,77 @@ public class ZipkinAutoConfigurationTests {
Awaitility.await().untilAsserted(() -> then(sender.isSpanSent()).isTrue());
}
+ @Test
+ public void checkResult_onTime() {
+ Sender sender = mock(Sender.class);
+ when(sender.check()).thenReturn(CheckResult.OK);
+
+ assertThat(ZipkinAutoConfiguration.checkResult(sender, 200).ok()).isTrue();
+ }
+
+ @Test
+ public void checkResult_onTime_notOk() {
+ Sender sender = mock(Sender.class);
+ RuntimeException exception = new RuntimeException("dead");
+ when(sender.check()).thenReturn(CheckResult.failed(exception));
+
+ assertThat(ZipkinAutoConfiguration.checkResult(sender, 200).error())
+ .isSameAs(exception);
+ }
+
+ /** Bug in {@link Sender} as it shouldn't throw */
+ @Test
+ public void checkResult_thrown() {
+ Sender sender = mock(Sender.class);
+ RuntimeException exception = new RuntimeException("dead");
+ when(sender.check()).thenThrow(exception);
+
+ assertThat(ZipkinAutoConfiguration.checkResult(sender, 200).error())
+ .isSameAs(exception);
+ }
+
+ @Test
+ public void checkResult_slow() {
+ assertThat(ZipkinAutoConfiguration.checkResult(new Sender() {
+ @Override
+ public CheckResult check() {
+ try {
+ Thread.sleep(500L);
+ }
+ catch (InterruptedException e) {
+ throw new AssertionError(e);
+ }
+ return CheckResult.OK;
+ }
+
+ @Override
+ public Encoding encoding() {
+ return Encoding.JSON;
+ }
+
+ @Override
+ public int messageMaxBytes() {
+ return 0;
+ }
+
+ @Override
+ public int messageSizeInBytes(List list) {
+ return 0;
+ }
+
+ @Override
+ public Call sendSpans(List list) {
+ return Call.create(null);
+ }
+
+ @Override
+ public String toString() {
+ return "FakeSender{}";
+ }
+ }, 200).error()).isInstanceOf(TimeoutException.class)
+ .hasMessage("FakeSender{} check() timed out after 200ms");
+ }
+
@Configuration
protected static class Config {
@@ -307,10 +383,11 @@ public class ZipkinAutoConfigurationTests {
protected static class HandlerHanldersConfig {
@Bean
- FinishedSpanHandler handlerOne() {
- return new FinishedSpanHandler() {
+ SpanHandler handlerOne() {
+ return new SpanHandler() {
@Override
- public boolean handle(TraceContext traceContext, MutableSpan span) {
+ public boolean end(TraceContext traceContext, MutableSpan span,
+ Cause cause) {
span.name("foo");
return true; // keep this span
}
@@ -318,10 +395,11 @@ public class ZipkinAutoConfigurationTests {
}
@Bean
- FinishedSpanHandler handlerTwo() {
- return new FinishedSpanHandler() {
+ SpanHandler handlerTwo() {
+ return new SpanHandler() {
@Override
- public boolean handle(TraceContext traceContext, MutableSpan span) {
+ public boolean end(TraceContext traceContext, MutableSpan span,
+ Cause cause) {
span.name(span.name() + " bar");
return true; // keep this span
}
diff --git a/src/checkstyle/checkstyle-suppressions.xml b/src/checkstyle/checkstyle-suppressions.xml
index 80260c2e4..e75174d51 100644
--- a/src/checkstyle/checkstyle-suppressions.xml
+++ b/src/checkstyle/checkstyle-suppressions.xml
@@ -5,7 +5,7 @@
-
+
@@ -16,7 +16,7 @@
-
+
diff --git a/tests/spring-cloud-sleuth-instrumentation-mvc-tests/src/test/java/org/springframework/cloud/sleuth/instrument/web/TraceFilterWebIntegrationTests.java b/tests/spring-cloud-sleuth-instrumentation-mvc-tests/src/test/java/org/springframework/cloud/sleuth/instrument/web/TraceFilterWebIntegrationTests.java
index 709a1cea4..2e16c37ff 100644
--- a/tests/spring-cloud-sleuth-instrumentation-mvc-tests/src/test/java/org/springframework/cloud/sleuth/instrument/web/TraceFilterWebIntegrationTests.java
+++ b/tests/spring-cloud-sleuth-instrumentation-mvc-tests/src/test/java/org/springframework/cloud/sleuth/instrument/web/TraceFilterWebIntegrationTests.java
@@ -22,9 +22,14 @@ import java.util.List;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
+import brave.Span.Kind;
+import brave.handler.MutableSpan;
+import brave.handler.SpanHandler;
import brave.http.HttpRequest;
import brave.http.HttpRequestParser;
import brave.propagation.CurrentTraceContext;
+import brave.propagation.CurrentTraceContext.Scope;
+import brave.propagation.TraceContext;
import brave.sampler.Sampler;
import brave.sampler.SamplerFunction;
import org.apache.commons.logging.Log;
@@ -33,6 +38,8 @@ import org.assertj.core.api.BDDAssertions;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import zipkin2.Span;
import org.springframework.beans.factory.annotation.Autowired;
@@ -65,6 +72,9 @@ import static org.assertj.core.api.BDDAssertions.then;
@ExtendWith(OutputCaptureExtension.class)
public class TraceFilterWebIntegrationTests {
+ private static final Logger log = LoggerFactory
+ .getLogger(TraceFilterWebIntegrationTests.class);
+
@Autowired
CurrentTraceContext currentTraceContext;
@@ -93,7 +103,8 @@ public class TraceFilterWebIntegrationTests {
}
@Test
- public void should_not_create_a_span_for_error_controller(CapturedOutput capture) {
+ public void exception_logging_span_handler_logs_synchronous_exceptions(
+ CapturedOutput capture) {
try {
new RestTemplate().getForObject("http://localhost:" + port() + "/",
String.class);
@@ -108,7 +119,7 @@ public class TraceFilterWebIntegrationTests {
.containsEntry("mvc.controller.class", "ExceptionThrowingController")
.containsEntry("error",
"Request processing failed; nested exception is java.lang.RuntimeException: Throwing exception");
- // issue#714
+ // Trace IDs in logs: issue#714
String hex = fromFirstTraceFilterFlow.traceId();
thenLogsForExceptionLoggingFilterContainTracingInformation(capture, hex);
}
@@ -168,6 +179,31 @@ public class TraceFilterWebIntegrationTests {
return new BlockingQueueSpanReporter();
}
+ @Bean
+ SpanHandler uncaughtExceptionThrown(CurrentTraceContext currentTraceContext) {
+ return new SpanHandler() {
+ @Override
+ public boolean end(TraceContext context, MutableSpan span, Cause cause) {
+ if (span.kind() != Kind.SERVER || span.error() == null
+ || !log.isErrorEnabled()) {
+ return true; // don't add overhead as we only log server errors
+ }
+
+ // In TracingFilter, the exception is raised in scope. This is is more
+ // explicit to ensure it works in other tech such as WebFlux.
+ try (Scope scope = currentTraceContext.maybeScope(context)) {
+ log.error("Uncaught exception thrown", span.error());
+ }
+ return true;
+ }
+
+ @Override
+ public String toString() {
+ return "UncaughtExceptionThrown";
+ }
+ };
+ }
+
@Bean
Sampler alwaysSampler() {
return Sampler.ALWAYS_SAMPLE;
diff --git a/tests/spring-cloud-sleuth-instrumentation-mvc-tests/src/test/java/org/springframework/cloud/sleuth/instrument/web/TraceWebServletAutoConfigurationTests.java b/tests/spring-cloud-sleuth-instrumentation-mvc-tests/src/test/java/org/springframework/cloud/sleuth/instrument/web/TraceWebServletAutoConfigurationTests.java
index 37a1e970a..3f49100bc 100644
--- a/tests/spring-cloud-sleuth-instrumentation-mvc-tests/src/test/java/org/springframework/cloud/sleuth/instrument/web/TraceWebServletAutoConfigurationTests.java
+++ b/tests/spring-cloud-sleuth-instrumentation-mvc-tests/src/test/java/org/springframework/cloud/sleuth/instrument/web/TraceWebServletAutoConfigurationTests.java
@@ -37,9 +37,9 @@ public class TraceWebServletAutoConfigurationTests {
TraceWebServletAutoConfiguration.class));
@Test
- public void shouldCreateExceptionLoggingFilterBeanByDefault() {
+ public void shouldNotCreateExceptionLoggingFilterBeanByDefault() {
this.contextRunner.run((context) -> {
- assertThat(context).hasBean(EXCEPTION_LOGGING_FILTER_BEAN_NAME);
+ assertThat(context).doesNotHaveBean(EXCEPTION_LOGGING_FILTER_BEAN_NAME);
});
}
diff --git a/tests/spring-cloud-sleuth-instrumentation-reactor-tests/src/test/java/org/springframework/cloud/sleuth/instrument/web/client/ITSpringConfiguredReactorClient.java b/tests/spring-cloud-sleuth-instrumentation-reactor-tests/src/test/java/org/springframework/cloud/sleuth/instrument/web/client/ITSpringConfiguredReactorClient.java
index 6976a9e39..b41ac1fc3 100644
--- a/tests/spring-cloud-sleuth-instrumentation-reactor-tests/src/test/java/org/springframework/cloud/sleuth/instrument/web/client/ITSpringConfiguredReactorClient.java
+++ b/tests/spring-cloud-sleuth-instrumentation-reactor-tests/src/test/java/org/springframework/cloud/sleuth/instrument/web/client/ITSpringConfiguredReactorClient.java
@@ -36,11 +36,11 @@ import org.reactivestreams.Subscription;
import reactor.core.publisher.BaseSubscriber;
import reactor.core.publisher.Mono;
import reactor.netty.http.client.HttpClient;
-import zipkin2.Span;
import org.springframework.cloud.sleuth.instrument.reactor.TraceReactorAutoConfigurationAccessorConfiguration;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
+import static brave.Span.Kind.CLIENT;
import static org.assertj.core.api.Assertions.assertThat;
/**
@@ -170,7 +170,7 @@ abstract class ITSpringConfiguredReactorClient
assertThat(server.getRequestCount()).isOne();
- reporter.takeRemoteSpanWithError(Span.Kind.CLIENT, "CANCELLED");
+ this.spanHandler.takeRemoteSpanWithErrorMessage(CLIENT, "CANCELLED");
}
}