From 22616f6f170022fdd4441b58e9a6102a9bc80c3a Mon Sep 17 00:00:00 2001 From: Marcin Grzejszczak Date: Mon, 18 Dec 2017 17:01:01 +0100 Subject: [PATCH 1/2] Updated docs --- docs/src/main/asciidoc/intro.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/src/main/asciidoc/intro.adoc b/docs/src/main/asciidoc/intro.adoc index 7549036c9..f7a223fd5 100644 --- a/docs/src/main/asciidoc/intro.adoc +++ b/docs/src/main/asciidoc/intro.adoc @@ -447,7 +447,7 @@ and then just annotate your main class with `@EnableZipkinStreamServer` annotati [source,java] ---- -include::https://raw.githubusercontent.com/spring-cloud/spring-cloud-sleuth/master/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin-stream/src/main/java/example/ZipkinStreamServerApplication.java[] +include::https://raw.githubusercontent.com/spring-cloud/spring-cloud-sleuth/https://raw.githubusercontent.com/spring-cloud/spring-cloud-sleuth/v1.2.4.RELEASE/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin-stream/src/main/java/example/ZipkinStreamServerApplication.java[] ---- == Additional resources From 09ab94b59d1a1ec3c28cc55c936ec6f8a9f0dd0c Mon Sep 17 00:00:00 2001 From: Marcin Grzejszczak Date: Mon, 18 Dec 2017 18:54:47 +0100 Subject: [PATCH 2/2] Fixed invalid reading from 'key' attribute of SpanTag; fixes #800 --- .../cloud/sleuth/annotation/SpanTag.java | 1 - .../annotation/SpanTagAnnotationHandler.java | 8 +++++- .../SleuthSpanCreatorAspectTests.java | 28 +++++++++++++++++-- 3 files changed, 33 insertions(+), 4 deletions(-) diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/annotation/SpanTag.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/annotation/SpanTag.java index 9da85d1f4..e1053b0be 100644 --- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/annotation/SpanTag.java +++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/annotation/SpanTag.java @@ -45,7 +45,6 @@ public @interface SpanTag { /** * The name of the key of the tag which should be created. */ - @AliasFor("key") String value() default ""; /** diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/annotation/SpanTagAnnotationHandler.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/annotation/SpanTagAnnotationHandler.java index e176eb106..9689045db 100644 --- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/annotation/SpanTagAnnotationHandler.java +++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/annotation/SpanTagAnnotationHandler.java @@ -121,10 +121,16 @@ class SpanTagAnnotationHandler { private void addAnnotatedArguments(List toBeAdded) { for (SleuthAnnotatedParameter container : toBeAdded) { String tagValue = resolveTagValue(container.annotation, container.argument); - tracer().addTag(container.annotation.value(), tagValue); + String tagKey = resolveTagKey(container); + tracer().addTag(tagKey, tagValue); } } + private String resolveTagKey(SleuthAnnotatedParameter container) { + return StringUtils.hasText(container.annotation.value()) ? + container.annotation.value() : container.annotation.key(); + } + String resolveTagValue(SpanTag annotation, Object argument) { if (argument == null) { return ""; diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/annotation/SleuthSpanCreatorAspectTests.java b/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/annotation/SleuthSpanCreatorAspectTests.java index a5a76c4ad..537e5a192 100644 --- a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/annotation/SleuthSpanCreatorAspectTests.java +++ b/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/annotation/SleuthSpanCreatorAspectTests.java @@ -149,6 +149,22 @@ public class SleuthSpanCreatorAspectTests { then(ExceptionUtils.getLastException()).isNull(); } + @Test + public void shouldContinueSpanWhenKeyIsUsedOnSpanTagWhenAnnotationOnInterfaceMethod() { + Span span = this.tracer.createSpan("foo"); + + this.testBean.testMethod10_v2("test"); + + this.tracer.close(span); + List spans = new ArrayList<>(this.accumulator.getSpans()); + then(new ListOfSpans(spans)).hasSize(1) + .hasASpanWithName("foo") + .hasASpanWithTagEqualTo("customTestTag10", "test") + .hasASpanWithLogEqualTo("customTest.before") + .hasASpanWithLogEqualTo("customTest.after"); + then(ExceptionUtils.getLastException()).isNull(); + } + @Test public void shouldContinueSpanWithLogWhenAnnotationOnClassMethod() { Span span = this.tracer.createSpan("foo"); @@ -244,7 +260,10 @@ public class SleuthSpanCreatorAspectTests { void testMethod9(String param); @ContinueSpan(log = "customTest") - void testMethod10(@SpanTag("testTag10") String param); + void testMethod10(@SpanTag(value = "testTag10") String param); + + @ContinueSpan(log = "customTest") + void testMethod10_v2(@SpanTag(key = "testTag10") String param); // tag::continue_span[] @ContinueSpan(log = "testMethod11") @@ -306,7 +325,12 @@ public class SleuthSpanCreatorAspectTests { } @Override - public void testMethod10(@SpanTag("customTestTag10") String param) { + public void testMethod10(@SpanTag(value = "customTestTag10") String param) { + + } + + @Override + public void testMethod10_v2(@SpanTag(key = "customTestTag10") String param) { }