From b1d39ce291b69700f003afc6cb718035debd836f Mon Sep 17 00:00:00 2001 From: Adrian Cole Date: Sat, 16 May 2020 14:01:38 +0800 Subject: [PATCH] Updates to Brave 5.12 and introduces SpanHandler (#1632) `SpanHandler` is the base type for the now deprecated `FinishedSpanHandler`. Notable, it can not just handle things at the end of a recording, but also the beginning. For example, this permits set-once baggage without the HTTP abstraction: ```java static final BaggageField EPOCH_SECONDS = BaggageField.create("epoch_seconds"); static final class RootOnlyBaggage extends SpanHandler { @Override public boolean begin(TraceContext context, MutableSpan span, @Nullable TraceContext parent) { if (EPOCH_SECONDS.getValue(context) == null) { // only set at the first span long epochSeconds = System.currentTimeMillis() / 1000; EPOCH_SECONDS.updateValue(context, String.valueOf(epochSeconds)); } return true; } @Override public boolean end(TraceContext context, MutableSpan span, Cause cause) { Tags.BAGGAGE_FIELD.tag(EPOCH_SECONDS, context, span); return true; } } ``` As the parent is available, it can also facilitate advanced tasks like counting children, or summarizing entire local roots. See https://github.com/openzipkin/brave/tree/master/brave/src/test/java/brave/features/handler and https://github.com/openzipkin/brave/blob/master/brave/src/main/java/brave/handler/SpanHandler.java for more --- benchmarks/pom.xml | 2 +- docs/src/main/asciidoc/_configprops.adoc | 2 +- .../main/asciidoc/spring-cloud-sleuth.adoc | 8 +++--- pom.xml | 2 +- .../cloud/sleuth/SpanAdjuster.java | 2 +- .../autoconfig/TraceAutoConfiguration.java | 8 +++--- .../sleuth/log/Slf4jCurrentTraceContext.java | 2 +- ...SleuthTagPropagationAutoConfiguration.java | 5 ++-- .../SleuthTagPropagationProperties.java | 4 +-- .../sleuth/sampler/SamplerCondition.java | 8 +++--- ...andlerTests.java => SpanHandlerTests.java} | 27 ++++++++++--------- ...gurationPropagationCustomizationTests.java | 9 ++++++- .../SamplerAutoConfigurationTests.java | 21 +++++++-------- spring-cloud-sleuth-dependencies/pom.xml | 10 +++++-- spring-cloud-sleuth-samples/pom.xml | 5 ---- .../pom.xml | 4 --- spring-cloud-sleuth-zipkin/pom.xml | 4 +++ .../zipkin2/ZipkinAutoConfigurationTests.java | 16 ++++++----- src/checkstyle/checkstyle-suppressions.xml | 4 +-- .../web/TraceFilterWebIntegrationTests.java | 9 +++---- .../ITSpringConfiguredReactorClient.java | 4 +-- 21 files changed, 82 insertions(+), 74 deletions(-) rename spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/{FinishedSpanHandlerTests.java => SpanHandlerTests.java} (80%) diff --git a/benchmarks/pom.xml b/benchmarks/pom.xml index ac935e10e..c0cb48a5d 100644 --- a/benchmarks/pom.xml +++ b/benchmarks/pom.xml @@ -33,7 +33,7 @@ 1.8 1.8 2.2.5.RELEASE - 5.11.2 + 5.12.0 3.14.6 diff --git a/docs/src/main/asciidoc/_configprops.adoc b/docs/src/main/asciidoc/_configprops.adoc index 2692e0e3c..1fe0eef0f 100644 --- a/docs/src/main/asciidoc/_configprops.adoc +++ b/docs/src/main/asciidoc/_configprops.adoc @@ -33,7 +33,7 @@ |spring.sleuth.messaging.rabbit.remote-service-name | rabbitmq | |spring.sleuth.opentracing.enabled | true | |spring.sleuth.propagation-keys | | List of fields that are referenced the same in-process as it is on the wire. For example, the name "x-vcap-request-id" would be set as-is including the prefix.

Note: {@code fieldName} will be implicitly lower-cased. @see brave.propagation.ExtraFieldPropagation.FactoryBuilder#addField(String) -|spring.sleuth.propagation.tag.enabled | true | Enables a {@link TagPropagationFinishedSpanHandler} that adds extra propagated fields to span tags. +|spring.sleuth.propagation.tag.enabled | true | Enables a {@link TagPropagationSpanHandler} that adds extra propagated fields to span tags. |spring.sleuth.propagation.tag.whitelisted-keys | | A list of keys to be put from extra propagation fields to span tags. |spring.sleuth.reactor.decorate-on-each | true | When true decorates on each operator, will be less performing, but logging will always contain the tracing entries in each operator. When false decorates on last operator, will be more performing, but logging might not always contain the tracing entries. |spring.sleuth.reactor.enabled | true | When true enables instrumentation for reactor. diff --git a/docs/src/main/asciidoc/spring-cloud-sleuth.adoc b/docs/src/main/asciidoc/spring-cloud-sleuth.adoc index 11d2ccda5..114248188 100644 --- a/docs/src/main/asciidoc/spring-cloud-sleuth.adoc +++ b/docs/src/main/asciidoc/spring-cloud-sleuth.adoc @@ -971,17 +971,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 02be955af..473f71ac9 100644 --- a/pom.xml +++ b/pom.xml @@ -264,7 +264,7 @@ Horsham.SR3 2.2.3.BUILD-SNAPSHOT 2.2.3.BUILD-SNAPSHOT - 5.11.2 + 5.12.0 2.1.7.RELEASE 2.2.1.RELEASE false 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 9d95f78f5..bf8f74f51 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; @@ -94,7 +94,7 @@ public class TraceAutoConfiguration { List spanAdjusters = new ArrayList<>(); @Autowired(required = false) - List finishedSpanHandlers = new ArrayList<>(); + List spanHandlers = new ArrayList<>(); @Autowired(required = false) ExtraFieldPropagation.FactoryBuilder extraFieldPropagationFactoryBuilder; @@ -121,8 +121,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 2c3c4bc82..342c9e4b1 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; @@ -45,8 +45,7 @@ public class SleuthTagPropagationAutoConfiguration { protected static class TagPropagationConfiguration { @Bean - static 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 f2e83e3c3..3d68ce96f 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 @@ -34,8 +34,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; *

* @@ -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 b3bfcff56..b5bc9bc94 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,10 +42,9 @@ import static org.springframework.boot.test.context.SpringBootTest.WebEnvironmen * @author Marcin Grzejszczak */ @RunWith(SpringRunner.class) -@SpringBootTest( - classes = FinishedSpanHandlerTests.FinishedSpanHandlerAspectTestsConfig.class, +@SpringBootTest(classes = SpanHandlerTests.SpanHandlerAspectTestsConfig.class, webEnvironment = NONE) -public class FinishedSpanHandlerTests { +public class SpanHandlerTests { @Autowired ArrayListSpanReporter reporter; @@ -65,7 +64,7 @@ public class FinishedSpanHandlerTests { @Configuration @EnableAutoConfiguration(exclude = IntegrationAutoConfiguration.class) - static class FinishedSpanHandlerAspectTestsConfig { + static class SpanHandlerAspectTestsConfig { @Bean Sampler sampler() { @@ -77,12 +76,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 } @@ -90,16 +90,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 f369d4145..5f5dce848 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 - public 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); - })); + public 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 9c31142b4..6e413a494 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 08d7d286b..4f3189f54 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 84723e1de..fdb98f015 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 0843e555e..72bedc57a 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/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 851c1c6d2..3a68148a2 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 @@ -21,8 +21,8 @@ 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; @@ -405,10 +405,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 } @@ -416,10 +417,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 b24121300..afd175451 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 @@ -23,8 +23,8 @@ import java.util.regex.Pattern; import java.util.stream.Collectors; import brave.Span.Kind; -import brave.handler.FinishedSpanHandler; import brave.handler.MutableSpan; +import brave.handler.SpanHandler; import brave.http.HttpRequest; import brave.http.HttpRequestParser; import brave.propagation.CurrentTraceContext; @@ -174,11 +174,10 @@ public class TraceFilterWebIntegrationTests { } @Bean - FinishedSpanHandler uncaughtExceptionThrown( - CurrentTraceContext currentTraceContext) { - return new FinishedSpanHandler() { + SpanHandler uncaughtExceptionThrown(CurrentTraceContext currentTraceContext) { + return new SpanHandler() { @Override - public boolean handle(TraceContext context, MutableSpan span) { + 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 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 19fcf9895..3db58f794 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 @@ -34,10 +34,10 @@ 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.context.annotation.AnnotationConfigApplicationContext; +import static brave.Span.Kind.CLIENT; import static org.assertj.core.api.Assertions.assertThat; /** @@ -161,7 +161,7 @@ abstract class ITSpringConfiguredReactorClient assertThat(server.getRequestCount()).isOne(); - reporter.takeRemoteSpanWithError(Span.Kind.CLIENT, "CANCELLED"); + this.spanHandler.takeRemoteSpanWithErrorMessage(CLIENT, "CANCELLED"); } }