diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/client/TraceAsyncRestTemplate.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/client/TraceAsyncRestTemplate.java index b95e7e4f2..7b0b4983d 100644 --- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/client/TraceAsyncRestTemplate.java +++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/client/TraceAsyncRestTemplate.java @@ -98,7 +98,10 @@ public class TraceAsyncRestTemplate extends AsyncRestTemplate { this.errorParser)); // potential race can happen here if (span != null && span.equals(this.tracer.getCurrentSpan())) { - this.tracer.detach(span); + Span parent = this.tracer.detach(span); + if (parent != null) { + this.tracer.continueSpan(parent); + } } return new ListenableFuture() { @@ -287,9 +290,4 @@ public class TraceAsyncRestTemplate extends AsyncRestTemplate { return this.tracer.isTracing(); } } - - - - - }