From d8b72473d17a6f1579e6a82246c65602fadaee42 Mon Sep 17 00:00:00 2001 From: Dave Syer Date: Mon, 1 Feb 2016 18:01:34 +0000 Subject: [PATCH] Ensure sampler is called with the new span if it is to be started --- .../cloud/sleuth/trace/DefaultTracer.java | 10 +++++++--- .../src/main/resources/application.yml | 3 +++ .../src/main/java/sample/SampleController.java | 13 ++++++++----- .../src/main/resources/application.yml | 3 +++ 4 files changed, 21 insertions(+), 8 deletions(-) diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/trace/DefaultTracer.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/trace/DefaultTracer.java index 7e3ec691f..3d8044e19 100644 --- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/trace/DefaultTracer.java +++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/trace/DefaultTracer.java @@ -71,14 +71,18 @@ public class DefaultTracer implements Tracer { @Override public Span startTrace(String name, Sampler sampler) { Span span; - if (isTracing() || sampler.isSampled(getCurrentSpan())) { + if (isTracing()) { span = createChild(getCurrentSpan(), name); } else { - // Non-exportable so we keep the trace but not other data long id = createId(); span = Span.builder().begin(System.currentTimeMillis()).name(name).traceId(id) - .spanId(id).exportable(false).build(); + .spanId(id).build(); + if (!sampler.isSampled(span)) { + // Non-exportable so we keep the trace but not other data + span = Span.builder().begin(span.getBegin()).name(name).traceId(id) + .spanId(id).exportable(false).build(); + } this.publisher.publishEvent(new SpanAcquiredEvent(this, span)); } return continueSpan(span); diff --git a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-stream/src/main/resources/application.yml b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-stream/src/main/resources/application.yml index 398079019..b27ac4847 100644 --- a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-stream/src/main/resources/application.yml +++ b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-stream/src/main/resources/application.yml @@ -4,3 +4,6 @@ server: spring: application: name: testSleuthApp + sleuth: + sampler: + percentage: 1.0 diff --git a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin/src/main/java/sample/SampleController.java b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin/src/main/java/sample/SampleController.java index aaee6f6e8..761ad7b9a 100644 --- a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin/src/main/java/sample/SampleController.java +++ b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin/src/main/java/sample/SampleController.java @@ -16,8 +16,9 @@ package sample; -import lombok.SneakyThrows; -import lombok.extern.slf4j.Slf4j; +import java.util.Random; +import java.util.concurrent.Callable; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.context.embedded.EmbeddedServletContainerInitializedEvent; import org.springframework.cloud.sleuth.Span; @@ -29,8 +30,8 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.client.RestTemplate; -import java.util.Random; -import java.util.concurrent.Callable; +import lombok.SneakyThrows; +import lombok.extern.slf4j.Slf4j; /** * @author Spencer Gibb @@ -55,7 +56,7 @@ ApplicationListener { @RequestMapping("/") public String hi() { Thread.sleep(this.random.nextInt(1000)); - + log.info("Home page"); String s = this.restTemplate.getForObject("http://localhost:" + this.port + "/hi2", String.class); return "hi/" + s; @@ -77,6 +78,7 @@ ApplicationListener { @RequestMapping("/async") public String async() { + log.info("async"); this.controller.background(); return "ho"; } @@ -84,6 +86,7 @@ ApplicationListener { @SneakyThrows @RequestMapping("/hi2") public String hi2() { + log.info("hi2"); int millis = this.random.nextInt(1000); Thread.sleep(millis); this.tracer.addTag("random-sleep-millis", String.valueOf(millis)); diff --git a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin/src/main/resources/application.yml b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin/src/main/resources/application.yml index 50322230f..95be19997 100644 --- a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin/src/main/resources/application.yml +++ b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin/src/main/resources/application.yml @@ -8,6 +8,9 @@ spring: zipkin: # Uncomment to send to zipkin, replacing 192.168.99.100 with your zipkin IP address # baseUrl: http://192.168.99.100:9411/ + sleuth: + sampler: + percentage: 1.0 sample: zipkin: