From 2f4a7fbde0b14be3a4769465b6d2a141dc3a26ee Mon Sep 17 00:00:00 2001 From: Marcin Grzejszczak Date: Thu, 1 Mar 2018 10:57:52 +0100 Subject: [PATCH] Added a filter condition to the reactor span pointcut; fixes gh-646 --- .../instrument/reactor/ReactorSleuth.java | 2 +- .../reactor/SpanSubscriberTests.java | 21 +++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/spring-cloud-sleuth-reactor/src/main/java/org/springframework/cloud/sleuth/instrument/reactor/ReactorSleuth.java b/spring-cloud-sleuth-reactor/src/main/java/org/springframework/cloud/sleuth/instrument/reactor/ReactorSleuth.java index d8c6b244a..50efedea5 100644 --- a/spring-cloud-sleuth-reactor/src/main/java/org/springframework/cloud/sleuth/instrument/reactor/ReactorSleuth.java +++ b/spring-cloud-sleuth-reactor/src/main/java/org/springframework/cloud/sleuth/instrument/reactor/ReactorSleuth.java @@ -45,7 +45,7 @@ public abstract class ReactorSleuth { } private static final Predicate POINTCUT_FILTER = - s -> !(s instanceof Fuseable.ScalarCallable); + s -> !(s instanceof Fuseable.ScalarCallable) && s.isScanAvailable(); private ReactorSleuth() { } diff --git a/spring-cloud-sleuth-reactor/src/test/java/org/springframework/cloud/sleuth/instrument/reactor/SpanSubscriberTests.java b/spring-cloud-sleuth-reactor/src/test/java/org/springframework/cloud/sleuth/instrument/reactor/SpanSubscriberTests.java index d1ff48b5c..9cb7ff326 100644 --- a/spring-cloud-sleuth-reactor/src/test/java/org/springframework/cloud/sleuth/instrument/reactor/SpanSubscriberTests.java +++ b/spring-cloud-sleuth-reactor/src/test/java/org/springframework/cloud/sleuth/instrument/reactor/SpanSubscriberTests.java @@ -179,6 +179,27 @@ public class SpanSubscriberTests { tracer.close(foo2); } + // #646 + @Test + public void should_work_for_mono_just_with_flat_map() { + + Span span = this.tracer.createSpan("foo"); + log.info("Hello"); + + Mono.just("value1") + .flatMap(request -> + Mono.just("value2") + .then(Mono.just("foo")) + ) + .map(a -> "qwe") + .block(); + + Awaitility.await().untilAsserted(() -> { + then(ExceptionUtils.getLastException()).isNull(); + }); + then(this.tracer.getCurrentSpan()).isNull(); + } + @AfterClass public static void cleanup() { Hooks.resetOnLastOperator();