diff --git a/benchmarks/pom.xml b/benchmarks/pom.xml index 1428445a0..1613445dc 100644 --- a/benchmarks/pom.xml +++ b/benchmarks/pom.xml @@ -34,7 +34,7 @@ 1.8 1.8 2.1.10.RELEASE - 5.11.2 + 5.12.0 3.11.0 diff --git a/docs/src/main/asciidoc/spring-cloud-sleuth.adoc b/docs/src/main/asciidoc/spring-cloud-sleuth.adoc index ec5fa6e09..64553f093 100644 --- a/docs/src/main/asciidoc/spring-cloud-sleuth.adoc +++ b/docs/src/main/asciidoc/spring-cloud-sleuth.adoc @@ -923,17 +923,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::../../../..//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 e0c9c800c..9cd8eb996 100644 --- a/pom.xml +++ b/pom.xml @@ -264,7 +264,7 @@ Fishtown.SR4 2.1.6.BUILD-SNAPSHOT 2.1.6.BUILD-SNAPSHOT - 5.11.2 + 5.12.0 2.1.2.RELEASE diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/SpanAdjuster.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/SpanAdjuster.java index e973e5378..5ff8914a9 100644 --- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/SpanAdjuster.java +++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/SpanAdjuster.java @@ -21,7 +21,7 @@ import zipkin2.Span; /** * Deprecated Span Adjuster. * - * @deprecated use {@link brave.handler.FinishedSpanHandler} + * @deprecated use {@link brave.handler.SpanHandler} * @author Marcin Grzejszczak */ @Deprecated 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 3cd38caa1..c6fd5469e 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,7 +25,7 @@ import brave.ErrorParser; import brave.Tracer; import brave.Tracing; import brave.TracingCustomizer; -import brave.handler.FinishedSpanHandler; +import brave.handler.SpanHandler; import brave.propagation.B3Propagation; import brave.propagation.CurrentTraceContext; import brave.propagation.CurrentTraceContextCustomizer; @@ -85,7 +85,7 @@ public class TraceAutoConfiguration { List spanAdjusters = new ArrayList<>(); @Autowired(required = false) - List finishedSpanHandlers = new ArrayList<>(); + List spanHandlers = new ArrayList<>(); @Autowired(required = false) List scopeDecorators = new ArrayList<>(); @@ -119,8 +119,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); diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/log/Slf4jCurrentTraceContext.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/log/Slf4jCurrentTraceContext.java index c5551a394..67c3a5cb7 100644 --- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/log/Slf4jCurrentTraceContext.java +++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/log/Slf4jCurrentTraceContext.java @@ -16,8 +16,8 @@ package org.springframework.cloud.sleuth.log; -import brave.internal.HexCodec; import brave.internal.Nullable; +import brave.internal.codec.HexCodec; import brave.propagation.CurrentTraceContext; import brave.propagation.TraceContext; import org.slf4j.Logger; diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/propagation/SleuthTagPropagationAutoConfiguration.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/propagation/SleuthTagPropagationAutoConfiguration.java index e0aeb1af4..5a263d221 100644 --- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/propagation/SleuthTagPropagationAutoConfiguration.java +++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/propagation/SleuthTagPropagationAutoConfiguration.java @@ -16,7 +16,7 @@ package org.springframework.cloud.sleuth.propagation; -import brave.handler.FinishedSpanHandler; +import brave.handler.SpanHandler; import org.springframework.boot.autoconfigure.AutoConfigureBefore; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; @@ -41,8 +41,7 @@ public class SleuthTagPropagationAutoConfiguration { protected static class TagPropagationConfiguration { @Bean - public FinishedSpanHandler sleuthFinishedSpanHandler( - SleuthProperties sleuthProperties, + static SpanHandler tagPropagationSpanHandler(SleuthProperties sleuthProperties, SleuthTagPropagationProperties tagPropagationProperties) { return new TagPropagationFinishedSpanHandler(sleuthProperties, tagPropagationProperties); diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/propagation/SleuthTagPropagationProperties.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/propagation/SleuthTagPropagationProperties.java index 0e60d7830..f9022b674 100644 --- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/propagation/SleuthTagPropagationProperties.java +++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/propagation/SleuthTagPropagationProperties.java @@ -31,8 +31,8 @@ import org.springframework.boot.context.properties.ConfigurationProperties; public class SleuthTagPropagationProperties { /** - * Enables a {@link TagPropagationFinishedSpanHandler} that adds extra propagated - * fields to span tags. + * Enables a {@link TagPropagationSpanHandler} that adds extra propagated fields to + * span tags. */ private boolean enabled = true; 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/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 71f42bbec..b0b793eba 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; @@ -42,8 +42,8 @@ import static org.springframework.boot.test.context.SpringBootTest.WebEnvironmen * @author Marcin Grzejszczak */ @RunWith(SpringRunner.class) -@SpringBootTest(classes = FinishedSpanHandlerTests.FinishedSpanHandlerAspectTestsConfig.class, webEnvironment = NONE) -public class FinishedSpanHandlerTests { +@SpringBootTest(classes = SpanHandlerTests.SpanHandlerAspectTestsConfig.class, webEnvironment = NONE) +public class SpanHandlerTests { @Autowired ArrayListSpanReporter reporter; @@ -63,7 +63,7 @@ public class FinishedSpanHandlerTests { @Configuration @EnableAutoConfiguration(exclude = IntegrationAutoConfiguration.class) - static class FinishedSpanHandlerAspectTestsConfig { + static class SpanHandlerAspectTestsConfig { @Bean Sampler sampler() { @@ -75,12 +75,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 } @@ -88,16 +89,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 c7f7155b7..a8f1a839a 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 @@ -17,6 +17,7 @@ package org.springframework.cloud.sleuth.autoconfig; import brave.propagation.B3Propagation; +import brave.propagation.B3Propagation.Format; import brave.propagation.B3SinglePropagation; import brave.propagation.ExtraFieldPropagation; import brave.propagation.Propagation; @@ -33,6 +34,12 @@ 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.MULTI).build(); + private final ApplicationContextRunner contextRunner = new ApplicationContextRunner() .withConfiguration(AutoConfigurations.of(TraceAutoConfiguration.class)); @@ -40,7 +47,7 @@ public class TraceAutoConfigurationPropagationCustomizationTests { public void stillCreatesDefault() { this.contextRunner.run((context) -> { BDDAssertions.then(context.getBean(Propagation.Factory.class)) - .isEqualTo(B3Propagation.FACTORY); + .isEqualTo(defaultB3Propagation); }); } 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 c6c72113b..8d1b792aa 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.CountingSampler; import brave.sampler.Sampler; @@ -52,12 +52,11 @@ public class SamplerAutoConfigurationTests { } @Test - public void should_use_CountingSampler_withFinishedSpanHandler() { - this.contextRunner.withUserConfiguration(WithFinishedSpanHandler.class) - .run((context -> { - final Sampler bean = context.getBean(Sampler.class); - BDDAssertions.then(bean).isInstanceOf(CountingSampler.class); - })); + public void should_use_CountingSampler_withSpanHandler() { + this.contextRunner.withUserConfiguration(WithSpanHandler.class).run((context -> { + final Sampler bean = context.getBean(Sampler.class); + BDDAssertions.then(bean).isInstanceOf(CountingSampler.class); + })); } @Test @@ -127,13 +126,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 00b19b100..05df4653d 100644 --- a/spring-cloud-sleuth-dependencies/pom.xml +++ b/spring-cloud-sleuth-dependencies/pom.xml @@ -31,7 +31,7 @@ spring-cloud-sleuth-dependencies Spring Cloud Sleuth Dependencies - 5.11.2 + 5.12.0 0.33.13 3.0.1 @@ -77,6 +77,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 d67702e2f..a7c4f75f2 100644 --- a/spring-cloud-sleuth-samples/pom.xml +++ b/spring-cloud-sleuth-samples/pom.xml @@ -70,11 +70,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 2811d29c5..3bfa50075 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 2ed8da992..a66039292 100644 --- a/spring-cloud-sleuth-zipkin/pom.xml +++ b/spring-cloud-sleuth-zipkin/pom.xml @@ -78,6 +78,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/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 2d290a316..b0f0021c7 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 @@ -20,8 +20,8 @@ import java.util.List; 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; @@ -299,10 +299,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 } @@ -310,10 +311,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 228a2c038..3824647b7 100644 --- a/src/checkstyle/checkstyle-suppressions.xml +++ b/src/checkstyle/checkstyle-suppressions.xml @@ -4,7 +4,7 @@ "https://www.puppycrawl.com/dtds/suppressions_1_1.dtd"> - + @@ -15,7 +15,7 @@ - +