diff --git a/instrumentation-core/spring/spring-webflux-5.0/src/main/java/io/opentelemetry/instrumentation/springwebflux/client/SpringWebfluxHttpClientDecorator.java b/instrumentation-core/spring/spring-webflux-5.0/src/main/java/io/opentelemetry/instrumentation/springwebflux/client/SpringWebfluxHttpClientDecorator.java index 41b5e78b45..b0a61365e8 100644 --- a/instrumentation-core/spring/spring-webflux-5.0/src/main/java/io/opentelemetry/instrumentation/springwebflux/client/SpringWebfluxHttpClientDecorator.java +++ b/instrumentation-core/spring/spring-webflux-5.0/src/main/java/io/opentelemetry/instrumentation/springwebflux/client/SpringWebfluxHttpClientDecorator.java @@ -16,19 +16,24 @@ package io.opentelemetry.instrumentation.springwebflux.client; -import io.opentelemetry.OpenTelemetry; +import static io.opentelemetry.OpenTelemetry.getPropagators; +import static io.opentelemetry.OpenTelemetry.getTracerProvider; +import static io.opentelemetry.instrumentation.springwebflux.client.HttpHeadersInjectAdapter.SETTER; + +import io.grpc.Context; import io.opentelemetry.auto.bootstrap.instrumentation.decorator.HttpClientDecorator; import io.opentelemetry.trace.Span; import io.opentelemetry.trace.Tracer; import java.net.URI; import java.util.List; +import org.springframework.http.HttpHeaders; import org.springframework.web.reactive.function.client.ClientRequest; import org.springframework.web.reactive.function.client.ClientResponse; class SpringWebfluxHttpClientDecorator extends HttpClientDecorator { public static final Tracer TRACER = - OpenTelemetry.getTracerProvider().get("io.opentelemetry.auto.spring-webflux-5.0"); + getTracerProvider().get("io.opentelemetry.auto.spring-webflux-5.0"); public static final SpringWebfluxHttpClientDecorator DECORATE = new SpringWebfluxHttpClientDecorator(); @@ -37,6 +42,10 @@ class SpringWebfluxHttpClientDecorator extends HttpClientDecorator filter(final ClientRequest request, final ExchangeFunction next) { - final Span span = - tracer.spanBuilder(DECORATE.spanNameForRequest(request)).setSpanKind(CLIENT).startSpan(); + final Span span = DECORATE.getOrCreateSpan(request, tracer); DECORATE.afterStart(span); try (final Scope scope = TRACER.withSpan(span)) { final ClientRequest mutatedRequest = ClientRequest.from(request) - .headers( - httpHeaders -> - OpenTelemetry.getPropagators() - .getHttpTextFormat() - .inject(Context.current(), httpHeaders, SETTER)) + .headers(httpHeaders -> DECORATE.inject(Context.current(), httpHeaders)) .build(); DECORATE.onRequest(span, mutatedRequest);