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 2f042d422..eb9dcc3bf 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 @@ -137,7 +137,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() { @@ -326,9 +329,4 @@ public class TraceAsyncRestTemplate extends AsyncRestTemplate { return this.tracer.isTracing(); } } - - - - - }