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"); } }