From d7a34f90bac6640bbec9b1f46bb553b8bab1e672 Mon Sep 17 00:00:00 2001 From: Mateusz Rzeszutek Date: Sat, 26 Aug 2023 02:37:25 +0200 Subject: [PATCH] Refactor and rename `HttpClientResend` and `HttpRouteHolder` (#9280) Co-authored-by: Trask Stalnaker --- .../HttpClientAttributesExtractorBuilder.java | 2 +- ...Resend.java => HttpClientResendCount.java} | 20 +- .../instrumenter/http/HttpRouteBiGetter.java | 21 +- .../instrumenter/http/HttpRouteGetter.java | 21 +- .../instrumenter/http/HttpRouteHolder.java | 108 +--------- .../instrumenter/http/HttpRouteSource.java | 22 +- .../HttpServerAttributesExtractorBuilder.java | 2 +- .../instrumenter/http/HttpServerRoute.java | 194 ++++++++++++++++++ .../http/HttpServerRouteBiGetter.java | 21 ++ .../http/HttpServerRouteGetter.java | 21 ++ .../http/HttpServerRouteSource.java | 41 ++++ .../http/HttpClientResendCountTest.java | 28 +++ .../http/HttpClientResendTest.java | 28 --- ...lderTest.java => HttpServerRouteTest.java} | 62 +++--- .../server/AkkaHttpServerSingletons.java | 4 +- .../armeria/v1_3/ServerDecorator.java | 8 +- .../armeria/v1_3/ArmeriaTelemetryBuilder.java | 4 +- .../decorators/HttpSpanDecorator.java | 8 +- .../finatra/FinatraSingletons.java | 8 +- .../grails/GrailsServerSpanNaming.java | 4 +- ...ingsInfoHandlerAdapterInstrumentation.java | 8 +- .../grizzly/GrizzlySingletons.java | 4 +- .../v1_0/JaxrsAnnotationsInstrumentation.java | 8 +- .../jaxrs/v1_0/JaxrsServerSpanNaming.java | 4 +- .../DefaultRequestContextInstrumentation.java | 8 +- .../v2_0/JaxrsAnnotationsInstrumentation.java | 8 +- .../jaxrs/v2_0/CxfSpanName.java | 10 +- .../jaxrs/v2_0/JerseySpanName.java | 10 +- .../jaxrs/v2_0/ResteasySpanName.java | 11 +- .../DefaultRequestContextInstrumentation.java | 8 +- .../v3_0/JaxrsAnnotationsInstrumentation.java | 8 +- .../jaxrs/v3_0/JerseySpanName.java | 10 +- .../jaxrs/v3_0/ResteasySpanName.java | 11 +- .../jaxrs/JaxrsServerSpanNaming.java | 4 +- .../jaxrs/RequestContextHelper.java | 8 +- .../ktor/v1_0/KtorServerTracing.kt | 8 +- .../ktor/v2_0/server/KtorServerTracing.kt | 8 +- .../LibertyDispatcherSingletons.java | 4 +- .../v3_8/server/NettyServerSingletons.java | 4 +- .../NettyServerInstrumenterFactory.java | 4 +- .../okhttp/v3_0/OkHttp3Singletons.java | 4 +- .../okhttp/v3_0/ContextInterceptor.java | 4 +- .../ConnectionErrorSpanInterceptor.java | 4 +- .../instrumentationapi/ContextBridgeTest.java | 12 +- .../testing/AgentSpanTestingInstrumenter.java | 8 +- .../play/v2_4/Play24Singletons.java | 6 +- .../play/v2_6/Play26Singletons.java | 6 +- .../resteasy/reactive/OtelRequestContext.java | 7 +- .../reactive/ResteasyReactiveSpanName.java | 8 +- .../ratpack/RatpackSingletons.java | 8 +- .../v1_7/OpenTelemetryServerHandler.java | 6 +- .../ratpack/v1_7/RatpackTelemetryBuilder.java | 4 +- .../HttpResponseReceiverInstrumenter.java | 4 +- .../v1_0/InstrumentationContexts.java | 4 +- .../restlet/v1_1/RestletSingletons.java | 4 +- .../restlet/v1_1/RouteInstrumentation.java | 6 +- .../restlet/v1_1/ServerInstrumentation.java | 6 +- .../restlet/v1_1/RestletTelemetryBuilder.java | 4 +- .../restlet/v1_1/TracingFilter.java | 6 +- .../restlet/v2_0/RestletSingletons.java | 4 +- .../restlet/v2_0/RouteInstrumentation.java | 6 +- .../restlet/v2_0/ServerInstrumentation.java | 6 +- .../restlet/v2_0/TracingFilter.java | 6 +- .../internal/RestletInstrumenterFactory.java | 4 +- .../servlet/BaseServletHelper.java | 10 +- .../servlet/ServletInstrumenterBuilder.java | 4 +- .../servlet/ServletSpanNameProvider.java | 4 +- .../sparkjava/SparkRouteUpdater.java | 8 +- .../server/HandlerAdapterInstrumentation.java | 8 +- .../webflux/v5_0/server/RouteOnSuccess.java | 6 +- .../v5_0/server/WebfluxSingletons.java | 4 +- .../v5_3/SpringWebfluxTelemetryBuilder.java | 4 +- .../v5_3/TelemetryProducingWebFilter.java | 11 +- .../v3_1/HandlerAdapterInstrumentation.java | 6 +- .../v3_1/SpringWebMvcServerSpanNaming.java | 4 +- .../OpenTelemetryHandlerMappingFilter.java | 11 +- .../v5_3/SpringWebMvcTelemetryBuilder.java | 4 +- .../v5_3/WebMvcTelemetryProducingFilter.java | 7 +- .../v6_0/HandlerAdapterInstrumentation.java | 6 +- .../v6_0/SpringWebMvcServerSpanNaming.java | 4 +- .../OpenTelemetryHandlerMappingFilter.java | 11 +- .../v6_0/SpringWebMvcTelemetryBuilder.java | 4 +- .../v6_0/WebMvcTelemetryProducingFilter.java | 7 +- .../ActionInvocationInstrumentation.java | 6 +- .../struts2/StrutsServerSpanNaming.java | 4 +- ...itializeActivePageNameInstrumentation.java | 8 +- .../tapestry/TapestryServerSpanNaming.java | 4 +- .../common/TomcatInstrumenterFactory.java | 4 +- .../undertow/UndertowSingletons.java | 4 +- .../instrumentation/vaadin/VaadinHelper.java | 14 +- .../vertx/RoutingContextHandlerWrapper.java | 11 +- ...RequestHandlerExecutorInstrumentation.java | 6 +- .../wicket/WicketServerSpanNaming.java | 4 +- .../testing/TestInstrumenters.java | 4 +- 94 files changed, 649 insertions(+), 455 deletions(-) rename instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/{HttpClientResend.java => HttpClientResendCount.java} (71%) create mode 100644 instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpServerRoute.java create mode 100644 instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpServerRouteBiGetter.java create mode 100644 instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpServerRouteGetter.java create mode 100644 instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpServerRouteSource.java create mode 100644 instrumentation-api-semconv/src/test/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpClientResendCountTest.java delete mode 100644 instrumentation-api-semconv/src/test/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpClientResendTest.java rename instrumentation-api-semconv/src/test/java/io/opentelemetry/instrumentation/api/instrumenter/http/{HttpRouteHolderTest.java => HttpServerRouteTest.java} (66%) diff --git a/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpClientAttributesExtractorBuilder.java b/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpClientAttributesExtractorBuilder.java index 701ef28f80..6212c59cc1 100644 --- a/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpClientAttributesExtractorBuilder.java +++ b/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpClientAttributesExtractorBuilder.java @@ -35,7 +35,7 @@ public final class HttpClientAttributesExtractorBuilder { List capturedRequestHeaders = emptyList(); List capturedResponseHeaders = emptyList(); Set knownMethods = HttpConstants.KNOWN_METHODS; - ToIntFunction resendCountIncrementer = HttpClientResend::getAndIncrement; + ToIntFunction resendCountIncrementer = HttpClientResendCount::getAndIncrement; HttpClientAttributesExtractorBuilder( HttpClientAttributesGetter httpAttributesGetter, diff --git a/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpClientResend.java b/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpClientResendCount.java similarity index 71% rename from instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpClientResend.java rename to instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpClientResendCount.java index 3df222ec1e..af81ced871 100644 --- a/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpClientResend.java +++ b/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpClientResendCount.java @@ -11,12 +11,12 @@ import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter; import java.util.concurrent.atomic.AtomicIntegerFieldUpdater; /** A helper that keeps track of the count of the HTTP request resend attempts. */ -public final class HttpClientResend { +public final class HttpClientResendCount { - private static final ContextKey KEY = + private static final ContextKey KEY = ContextKey.named("opentelemetry-http-client-resend-key"); - private static final AtomicIntegerFieldUpdater resendsUpdater = - AtomicIntegerFieldUpdater.newUpdater(HttpClientResend.class, "resends"); + private static final AtomicIntegerFieldUpdater resendsUpdater = + AtomicIntegerFieldUpdater.newUpdater(HttpClientResendCount.class, "resends"); /** * Initializes the HTTP request resend counter. @@ -29,16 +29,20 @@ public final class HttpClientResend { if (context.get(KEY) != null) { return context; } - return context.with(KEY, new HttpClientResend()); + return context.with(KEY, new HttpClientResendCount()); } + /** + * Returns the count of the already made attempts to send an HTTP request; 0 if this is the first + * send attempt. + */ public static int get(Context context) { - HttpClientResend resend = context.get(KEY); + HttpClientResendCount resend = context.get(KEY); return resend == null ? 0 : resend.resends; } static int getAndIncrement(Context context) { - HttpClientResend resend = context.get(KEY); + HttpClientResendCount resend = context.get(KEY); if (resend == null) { return 0; } @@ -48,5 +52,5 @@ public final class HttpClientResend { @SuppressWarnings("unused") // it actually is used by the resendsUpdater private volatile int resends = 0; - private HttpClientResend() {} + private HttpClientResendCount() {} } diff --git a/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpRouteBiGetter.java b/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpRouteBiGetter.java index 4a7008953b..5969606f62 100644 --- a/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpRouteBiGetter.java +++ b/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpRouteBiGetter.java @@ -5,17 +5,12 @@ package io.opentelemetry.instrumentation.api.instrumenter.http; -import io.opentelemetry.context.Context; -import javax.annotation.Nullable; - -/** An interface for getting the {@code http.route} attribute. */ +/** + * An interface for getting the {@code http.route} attribute. + * + * @deprecated This class is deprecated and will be removed in the 2.0 release. Use {@link + * HttpServerRouteBiGetter} instead. + */ +@Deprecated @FunctionalInterface -public interface HttpRouteBiGetter { - - /** - * Returns the {@code http.route} attribute extracted from {@code context}, {@code arg1} and - * {@code arg2}; or {@code null} if it was not found. - */ - @Nullable - String get(Context context, T arg1, U arg2); -} +public interface HttpRouteBiGetter extends HttpServerRouteBiGetter {} diff --git a/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpRouteGetter.java b/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpRouteGetter.java index a76cbf2ad8..3d84dbeed1 100644 --- a/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpRouteGetter.java +++ b/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpRouteGetter.java @@ -5,17 +5,12 @@ package io.opentelemetry.instrumentation.api.instrumenter.http; -import io.opentelemetry.context.Context; -import javax.annotation.Nullable; - -/** An interface for getting the {@code http.route} attribute. */ +/** + * An interface for getting the {@code http.route} attribute. + * + * @deprecated This class is deprecated and will be removed in the 2.0 release. Use {@link + * HttpServerRouteGetter} instead. + */ +@Deprecated @FunctionalInterface -public interface HttpRouteGetter { - - /** - * Returns the {@code http.route} attribute extracted from {@code context} and {@code arg}; or - * {@code null} if it was not found. - */ - @Nullable - String get(Context context, T arg); -} +public interface HttpRouteGetter extends HttpServerRouteGetter {} diff --git a/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpRouteHolder.java b/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpRouteHolder.java index 6ed74e08e9..85f8e3ac91 100644 --- a/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpRouteHolder.java +++ b/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpRouteHolder.java @@ -5,13 +5,9 @@ package io.opentelemetry.instrumentation.api.instrumenter.http; -import io.opentelemetry.api.trace.Span; import io.opentelemetry.context.Context; import io.opentelemetry.instrumentation.api.instrumenter.ContextCustomizer; import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter; -import io.opentelemetry.instrumentation.api.instrumenter.LocalRootSpan; -import io.opentelemetry.instrumentation.api.internal.HttpRouteState; -import io.opentelemetry.semconv.trace.attributes.SemanticAttributes; import javax.annotation.Nullable; /** @@ -22,7 +18,11 @@ import javax.annotation.Nullable; * later, after the instrumented operation starts. This class provides several static methods that * allow the instrumentation author to provide the matching HTTP route to the instrumentation when * it is discovered. + * + * @deprecated This class is deprecated and will be removed in the 2.0 release. Use {@link + * HttpServerRoute} instead. */ +@Deprecated public final class HttpRouteHolder { /** @@ -31,13 +31,7 @@ public final class HttpRouteHolder { */ public static ContextCustomizer create( HttpServerAttributesGetter getter) { - return (context, request, startAttributes) -> { - if (HttpRouteState.fromContextOrNull(context) != null) { - return context; - } - String method = getter.getHttpRequestMethod(request); - return context.with(HttpRouteState.create(method, null, 0)); - }; + return HttpServerRoute.create(getter); } private HttpRouteHolder() {} @@ -57,7 +51,7 @@ public final class HttpRouteHolder { */ public static void updateHttpRoute( Context context, HttpRouteSource source, @Nullable String httpRoute) { - updateHttpRoute(context, source, ConstantAdapter.INSTANCE, httpRoute); + HttpServerRoute.update(context, source.toHttpServerRouteSource(), httpRoute); } /** @@ -75,7 +69,7 @@ public final class HttpRouteHolder { */ public static void updateHttpRoute( Context context, HttpRouteSource source, HttpRouteGetter httpRouteGetter, T arg1) { - updateHttpRoute(context, source, OneArgAdapter.getInstance(), arg1, httpRouteGetter); + HttpServerRoute.update(context, source.toHttpServerRouteSource(), httpRouteGetter, arg1); } /** @@ -97,92 +91,6 @@ public final class HttpRouteHolder { HttpRouteBiGetter httpRouteGetter, T arg1, U arg2) { - Span serverSpan = LocalRootSpan.fromContextOrNull(context); - // even if the server span is not sampled, we have to continue - we need to compute the - // http.route properly so that it can be captured by the server metrics - if (serverSpan == null) { - return; - } - HttpRouteState httpRouteState = HttpRouteState.fromContextOrNull(context); - if (httpRouteState == null) { - // TODO: remove this branch? - String httpRoute = httpRouteGetter.get(context, arg1, arg2); - if (httpRoute != null && !httpRoute.isEmpty()) { - // update just the attribute - without http.method we can't compute a proper span name here - serverSpan.setAttribute(SemanticAttributes.HTTP_ROUTE, httpRoute); - } - return; - } - // special case for servlet filters, even when we have a route from previous filter see whether - // the new route is better and if so use it instead - boolean onlyIfBetterRoute = - !source.useFirst && source.order == httpRouteState.getUpdatedBySourceOrder(); - if (source.order > httpRouteState.getUpdatedBySourceOrder() || onlyIfBetterRoute) { - String route = httpRouteGetter.get(context, arg1, arg2); - if (route != null - && !route.isEmpty() - && (!onlyIfBetterRoute || isBetterRoute(httpRouteState, route))) { - - // update just the span name - the attribute will be picked up by the - // HttpServerAttributesExtractor at the end of request processing - updateSpanName(serverSpan, httpRouteState, route); - - httpRouteState.update(context, source.order, route); - } - } - } - - // This is used when setting route from a servlet filter to pick the most descriptive (longest) - // route. - private static boolean isBetterRoute(HttpRouteState httpRouteState, String name) { - String route = httpRouteState.getRoute(); - int routeLength = route == null ? 0 : route.length(); - return name.length() > routeLength; - } - - private static void updateSpanName(Span serverSpan, HttpRouteState httpRouteState, String route) { - String method = httpRouteState.getMethod(); - // method should never really be null - but in case it for some reason is, we'll rely on the - // span name extractor behavior - if (method != null) { - serverSpan.updateName(method + " " + route); - } - } - - /** - * Returns the {@code http.route} attribute value that's stored in the {@code context}, or null if - * it was not set before. - */ - @Nullable - static String getRoute(Context context) { - HttpRouteState httpRouteState = HttpRouteState.fromContextOrNull(context); - return httpRouteState == null ? null : httpRouteState.getRoute(); - } - - private static final class OneArgAdapter implements HttpRouteBiGetter> { - - private static final OneArgAdapter INSTANCE = new OneArgAdapter<>(); - - @SuppressWarnings("unchecked") - static OneArgAdapter getInstance() { - return (OneArgAdapter) INSTANCE; - } - - @Override - @Nullable - public String get(Context context, T arg, HttpRouteGetter httpRouteGetter) { - return httpRouteGetter.get(context, arg); - } - } - - private static final class ConstantAdapter implements HttpRouteGetter { - - private static final ConstantAdapter INSTANCE = new ConstantAdapter(); - - @Nullable - @Override - public String get(Context context, String route) { - return route; - } + HttpServerRoute.update(context, source.toHttpServerRouteSource(), httpRouteGetter, arg1, arg2); } } diff --git a/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpRouteSource.java b/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpRouteSource.java index e566d7ea80..8263a9469c 100644 --- a/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpRouteSource.java +++ b/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpRouteSource.java @@ -5,7 +5,13 @@ package io.opentelemetry.instrumentation.api.instrumenter.http; -/** Represents the source that provided the {@code http.route} attribute. */ +/** + * Represents the source that provided the {@code http.route} attribute. + * + * @deprecated This class is deprecated and will be removed in the 2.0 release. Use {@link + * HttpServerRouteSource} instead. + */ +@Deprecated public enum HttpRouteSource { // for servlet filters we try to find the best name which isn't necessarily from the first // filter that is called @@ -27,4 +33,18 @@ public enum HttpRouteSource { this.order = order; this.useFirst = useFirst; } + + HttpServerRouteSource toHttpServerRouteSource() { + switch (this) { + case FILTER: + return HttpServerRouteSource.SERVER_FILTER; + case SERVLET: + return HttpServerRouteSource.SERVER; + case CONTROLLER: + return HttpServerRouteSource.CONTROLLER; + case NESTED_CONTROLLER: + return HttpServerRouteSource.NESTED_CONTROLLER; + } + throw new IllegalStateException("Unsupported value " + this); + } } diff --git a/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpServerAttributesExtractorBuilder.java b/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpServerAttributesExtractorBuilder.java index 93b1028df7..dc4a11d597 100644 --- a/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpServerAttributesExtractorBuilder.java +++ b/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpServerAttributesExtractorBuilder.java @@ -37,7 +37,7 @@ public final class HttpServerAttributesExtractorBuilder { List capturedRequestHeaders = emptyList(); List capturedResponseHeaders = emptyList(); Set knownMethods = HttpConstants.KNOWN_METHODS; - Function httpRouteGetter = HttpRouteHolder::getRoute; + Function httpRouteGetter = HttpServerRoute::get; HttpServerAttributesExtractorBuilder( HttpServerAttributesGetter httpAttributesGetter, diff --git a/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpServerRoute.java b/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpServerRoute.java new file mode 100644 index 0000000000..58d687523d --- /dev/null +++ b/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpServerRoute.java @@ -0,0 +1,194 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.instrumentation.api.instrumenter.http; + +import io.opentelemetry.api.trace.Span; +import io.opentelemetry.context.Context; +import io.opentelemetry.instrumentation.api.instrumenter.ContextCustomizer; +import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter; +import io.opentelemetry.instrumentation.api.instrumenter.LocalRootSpan; +import io.opentelemetry.instrumentation.api.internal.HttpRouteState; +import io.opentelemetry.semconv.trace.attributes.SemanticAttributes; +import javax.annotation.Nullable; + +/** + * A helper class that keeps track of the {@code http.route} attribute value during HTTP server + * request processing. + * + *

Usually the route is not accessible when the request processing starts; and needs to be set + * later, after the instrumented operation starts. This class provides several static methods that + * allow the instrumentation author to provide the matching HTTP route to the instrumentation when + * it is discovered. + */ +public final class HttpServerRoute { + + /** + * Returns a {@link ContextCustomizer} that initializes an {@link HttpServerRoute} in the {@link + * Context} returned from {@link Instrumenter#start(Context, Object)}. + */ + public static ContextCustomizer create( + HttpServerAttributesGetter getter) { + return (context, request, startAttributes) -> { + if (HttpRouteState.fromContextOrNull(context) != null) { + return context; + } + String method = getter.getHttpRequestMethod(request); + return context.with(HttpRouteState.create(method, null, 0)); + }; + } + + private HttpServerRoute() {} + + /** + * Updates the {@code http.route} attribute in the received {@code context}. + * + *

If there is a server span in the context, and the context has been customized with a {@link + * HttpServerRoute}, then this method will update the route using the provided {@code httpRoute} + * if and only if the last {@link HttpServerRouteSource} to update the route using this method has + * strictly lower priority than the provided {@link HttpServerRouteSource}, and the passed value + * is non-null. + * + *

If there is a server span in the context, and the context has NOT been customized with a + * {@link HttpServerRoute}, then this method will update the route using the provided value if it + * is non-null. + */ + public static void update( + Context context, HttpServerRouteSource source, @Nullable String httpRoute) { + update(context, source, ConstantAdapter.INSTANCE, httpRoute); + } + + /** + * Updates the {@code http.route} attribute in the received {@code context}. + * + *

If there is a server span in the context, and the context has been customized with a {@link + * HttpServerRoute}, then this method will update the route using the provided {@link + * HttpServerRouteGetter} if and only if the last {@link HttpServerRouteSource} to update the + * route using this method has strictly lower priority than the provided {@link + * HttpServerRouteSource}, and the value returned from the {@link HttpServerRouteGetter} is + * non-null. + * + *

If there is a server span in the context, and the context has NOT been customized with a + * {@link HttpServerRoute}, then this method will update the route using the provided {@link + * HttpServerRouteGetter} if the value returned from it is non-null. + */ + public static void update( + Context context, + HttpServerRouteSource source, + HttpServerRouteGetter httpRouteGetter, + T arg1) { + update(context, source, OneArgAdapter.getInstance(), arg1, httpRouteGetter); + } + + /** + * Updates the {@code http.route} attribute in the received {@code context}. + * + *

If there is a server span in the context, and the context has been customized with a {@link + * HttpServerRoute}, then this method will update the route using the provided {@link + * HttpServerRouteBiGetter} if and only if the last {@link HttpServerRouteSource} to update the + * route using this method has strictly lower priority than the provided {@link + * HttpServerRouteSource}, and the value returned from the {@link HttpServerRouteBiGetter} is + * non-null. + * + *

If there is a server span in the context, and the context has NOT been customized with a + * {@code ServerSpanName}, then this method will update the route using the provided {@link + * HttpServerRouteBiGetter} if the value returned from it is non-null. + */ + public static void update( + Context context, + HttpServerRouteSource source, + HttpServerRouteBiGetter httpRouteGetter, + T arg1, + U arg2) { + Span serverSpan = LocalRootSpan.fromContextOrNull(context); + // even if the server span is not sampled, we have to continue - we need to compute the + // http.route properly so that it can be captured by the server metrics + if (serverSpan == null) { + return; + } + HttpRouteState httpRouteState = HttpRouteState.fromContextOrNull(context); + if (httpRouteState == null) { + // TODO: remove this branch? + String httpRoute = httpRouteGetter.get(context, arg1, arg2); + if (httpRoute != null && !httpRoute.isEmpty()) { + // update just the attribute - without http.method we can't compute a proper span name here + serverSpan.setAttribute(SemanticAttributes.HTTP_ROUTE, httpRoute); + } + return; + } + // special case for servlet filters, even when we have a route from previous filter see whether + // the new route is better and if so use it instead + boolean onlyIfBetterRoute = + !source.useFirst && source.order == httpRouteState.getUpdatedBySourceOrder(); + if (source.order > httpRouteState.getUpdatedBySourceOrder() || onlyIfBetterRoute) { + String route = httpRouteGetter.get(context, arg1, arg2); + if (route != null + && !route.isEmpty() + && (!onlyIfBetterRoute || isBetterRoute(httpRouteState, route))) { + + // update just the span name - the attribute will be picked up by the + // HttpServerAttributesExtractor at the end of request processing + updateSpanName(serverSpan, httpRouteState, route); + + httpRouteState.update(context, source.order, route); + } + } + } + + // This is used when setting route from a servlet filter to pick the most descriptive (longest) + // route. + private static boolean isBetterRoute(HttpRouteState httpRouteState, String name) { + String route = httpRouteState.getRoute(); + int routeLength = route == null ? 0 : route.length(); + return name.length() > routeLength; + } + + private static void updateSpanName(Span serverSpan, HttpRouteState httpRouteState, String route) { + String method = httpRouteState.getMethod(); + // method should never really be null - but in case it for some reason is, we'll rely on the + // span name extractor behavior + if (method != null) { + serverSpan.updateName(method + " " + route); + } + } + + /** + * Returns the {@code http.route} attribute value that's stored in the {@code context}, or null if + * it was not set before. + */ + @Nullable + static String get(Context context) { + HttpRouteState httpRouteState = HttpRouteState.fromContextOrNull(context); + return httpRouteState == null ? null : httpRouteState.getRoute(); + } + + private static final class OneArgAdapter + implements HttpServerRouteBiGetter> { + + private static final OneArgAdapter INSTANCE = new OneArgAdapter<>(); + + @SuppressWarnings("unchecked") + static OneArgAdapter getInstance() { + return (OneArgAdapter) INSTANCE; + } + + @Override + @Nullable + public String get(Context context, T arg, HttpServerRouteGetter httpRouteGetter) { + return httpRouteGetter.get(context, arg); + } + } + + private static final class ConstantAdapter implements HttpServerRouteGetter { + + private static final ConstantAdapter INSTANCE = new ConstantAdapter(); + + @Nullable + @Override + public String get(Context context, String route) { + return route; + } + } +} diff --git a/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpServerRouteBiGetter.java b/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpServerRouteBiGetter.java new file mode 100644 index 0000000000..5fd55945de --- /dev/null +++ b/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpServerRouteBiGetter.java @@ -0,0 +1,21 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.instrumentation.api.instrumenter.http; + +import io.opentelemetry.context.Context; +import javax.annotation.Nullable; + +/** An interface for getting the {@code http.route} attribute. */ +@FunctionalInterface +public interface HttpServerRouteBiGetter { + + /** + * Returns the {@code http.route} attribute extracted from {@code context}, {@code arg1} and + * {@code arg2}; or {@code null} if it was not found. + */ + @Nullable + String get(Context context, T arg1, U arg2); +} diff --git a/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpServerRouteGetter.java b/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpServerRouteGetter.java new file mode 100644 index 0000000000..9575331a95 --- /dev/null +++ b/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpServerRouteGetter.java @@ -0,0 +1,21 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.instrumentation.api.instrumenter.http; + +import io.opentelemetry.context.Context; +import javax.annotation.Nullable; + +/** An interface for getting the {@code http.route} attribute. */ +@FunctionalInterface +public interface HttpServerRouteGetter { + + /** + * Returns the {@code http.route} attribute extracted from {@code context} and {@code arg}; or + * {@code null} if it was not found. + */ + @Nullable + String get(Context context, T arg); +} diff --git a/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpServerRouteSource.java b/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpServerRouteSource.java new file mode 100644 index 0000000000..03c7721c31 --- /dev/null +++ b/instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpServerRouteSource.java @@ -0,0 +1,41 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.instrumentation.api.instrumenter.http; + +/** Represents the source that provided the {@code http.route} attribute. */ +public enum HttpServerRouteSource { + /** + * Represents a "filter" that may execute before the actual server handler. E.g. the Servlet API + * {@code Filter} interface. Since multiple filters may match the same request, the one with the + * longest (most detailed) route will be chosen. + */ + SERVER_FILTER(1, /* useFirst= */ false), + /** Represents the actual server handler. E.g. the Servlet API {@code Servlet} interface. */ + SERVER(2), + /** + * Represents the controller, usually defined as part of some MVC framework. E.g. a Spring Web MVC + * controller method, or a JAX-RS annotated resource method. + */ + CONTROLLER(3), + /** + * Represents a nested controller, usually defined as part of some MVC framework. E.g. a JAX-RS + * annotated sub-resource method. Since multiple nested controllers may match the same request, + * the one with the longest (most detailed) route will be chosen. + */ + NESTED_CONTROLLER(4, false); + + final int order; + final boolean useFirst; + + HttpServerRouteSource(int order) { + this(order, /* useFirst= */ true); + } + + HttpServerRouteSource(int order, boolean useFirst) { + this.order = order; + this.useFirst = useFirst; + } +} diff --git a/instrumentation-api-semconv/src/test/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpClientResendCountTest.java b/instrumentation-api-semconv/src/test/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpClientResendCountTest.java new file mode 100644 index 0000000000..f5ac20a956 --- /dev/null +++ b/instrumentation-api-semconv/src/test/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpClientResendCountTest.java @@ -0,0 +1,28 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.instrumentation.api.instrumenter.http; + +import static org.assertj.core.api.Assertions.assertThat; + +import io.opentelemetry.context.Context; +import org.junit.jupiter.api.Test; + +class HttpClientResendCountTest { + + @Test + void resendCountShouldBeZeroWhenNotInitialized() { + assertThat(HttpClientResendCount.getAndIncrement(Context.root())).isEqualTo(0); + assertThat(HttpClientResendCount.getAndIncrement(Context.root())).isEqualTo(0); + } + + @Test + void incrementResendCount() { + Context context = HttpClientResendCount.initialize(Context.root()); + + assertThat(HttpClientResendCount.getAndIncrement(context)).isEqualTo(0); + assertThat(HttpClientResendCount.getAndIncrement(context)).isEqualTo(1); + } +} diff --git a/instrumentation-api-semconv/src/test/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpClientResendTest.java b/instrumentation-api-semconv/src/test/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpClientResendTest.java deleted file mode 100644 index 91f8b5aacb..0000000000 --- a/instrumentation-api-semconv/src/test/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpClientResendTest.java +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.instrumentation.api.instrumenter.http; - -import static org.assertj.core.api.Assertions.assertThat; - -import io.opentelemetry.context.Context; -import org.junit.jupiter.api.Test; - -class HttpClientResendTest { - - @Test - void resendCountShouldBeZeroWhenNotInitialized() { - assertThat(HttpClientResend.getAndIncrement(Context.root())).isEqualTo(0); - assertThat(HttpClientResend.getAndIncrement(Context.root())).isEqualTo(0); - } - - @Test - void incrementResendCount() { - Context context = HttpClientResend.initialize(Context.root()); - - assertThat(HttpClientResend.getAndIncrement(context)).isEqualTo(0); - assertThat(HttpClientResend.getAndIncrement(context)).isEqualTo(1); - } -} diff --git a/instrumentation-api-semconv/src/test/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpRouteHolderTest.java b/instrumentation-api-semconv/src/test/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpServerRouteTest.java similarity index 66% rename from instrumentation-api-semconv/src/test/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpRouteHolderTest.java rename to instrumentation-api-semconv/src/test/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpServerRouteTest.java index 46ab3d6892..f252b59c90 100644 --- a/instrumentation-api-semconv/src/test/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpRouteHolderTest.java +++ b/instrumentation-api-semconv/src/test/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpServerRouteTest.java @@ -22,7 +22,7 @@ import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; @ExtendWith(MockitoExtension.class) -class HttpRouteHolderTest { +class HttpServerRouteTest { @RegisterExtension static final OpenTelemetryExtension testing = OpenTelemetryExtension.create(); @@ -33,7 +33,7 @@ class HttpRouteHolderTest { void setUp() { instrumenter = Instrumenter.builder(testing.getOpenTelemetry(), "test", s -> s) - .addContextCustomizer(HttpRouteHolder.create(getter)) + .addContextCustomizer(HttpServerRoute.create(getter)) .buildInstrumenter(); } @@ -44,13 +44,13 @@ class HttpRouteHolderTest { parentSpan.end(); Context context = instrumenter.start(Context.root().with(parentSpan), "test"); - assertNull(HttpRouteHolder.getRoute(context)); + assertNull(HttpServerRoute.get(context)); - HttpRouteHolder.updateHttpRoute(context, HttpRouteSource.SERVLET, "/get/:id"); + HttpServerRoute.update(context, HttpServerRouteSource.SERVER, "/get/:id"); instrumenter.end(context, "test", null, null); - assertNull(HttpRouteHolder.getRoute(context)); + assertNull(HttpServerRoute.get(context)); assertThat(testing.getSpans()) .satisfiesExactly( span -> assertThat(span).hasName("parent"), span -> assertThat(span).hasName("test")); @@ -61,13 +61,13 @@ class HttpRouteHolderTest { when(getter.getHttpRequestMethod("test")).thenReturn("GET"); Context context = instrumenter.start(Context.root(), "test"); - assertNull(HttpRouteHolder.getRoute(context)); + assertNull(HttpServerRoute.get(context)); - HttpRouteHolder.updateHttpRoute(context, HttpRouteSource.SERVLET, "/get/:id"); + HttpServerRoute.update(context, HttpServerRouteSource.SERVER, "/get/:id"); instrumenter.end(context, "test", null, null); - assertEquals("/get/:id", HttpRouteHolder.getRoute(context)); + assertEquals("/get/:id", HttpServerRoute.get(context)); assertThat(testing.getSpans()) .satisfiesExactly(span -> assertThat(span).hasName("GET /get/:id")); } @@ -77,14 +77,14 @@ class HttpRouteHolderTest { when(getter.getHttpRequestMethod("test")).thenReturn("GET"); Context context = instrumenter.start(Context.root(), "test"); - assertNull(HttpRouteHolder.getRoute(context)); + assertNull(HttpServerRoute.get(context)); - HttpRouteHolder.updateHttpRoute(context, HttpRouteSource.SERVLET, "/route1"); - HttpRouteHolder.updateHttpRoute(context, HttpRouteSource.SERVLET, "/route2"); + HttpServerRoute.update(context, HttpServerRouteSource.SERVER, "/route1"); + HttpServerRoute.update(context, HttpServerRouteSource.SERVER, "/route2"); instrumenter.end(context, "test", null, null); - assertEquals("/route1", HttpRouteHolder.getRoute(context)); + assertEquals("/route1", HttpServerRoute.get(context)); assertThat(testing.getSpans()) .satisfiesExactly(span -> assertThat(span).hasName("GET /route1")); } @@ -94,14 +94,14 @@ class HttpRouteHolderTest { when(getter.getHttpRequestMethod("test")).thenReturn("GET"); Context context = instrumenter.start(Context.root(), "test"); - assertNull(HttpRouteHolder.getRoute(context)); + assertNull(HttpServerRoute.get(context)); - HttpRouteHolder.updateHttpRoute(context, HttpRouteSource.CONTROLLER, "/route1"); - HttpRouteHolder.updateHttpRoute(context, HttpRouteSource.SERVLET, "/route2"); + HttpServerRoute.update(context, HttpServerRouteSource.CONTROLLER, "/route1"); + HttpServerRoute.update(context, HttpServerRouteSource.SERVER, "/route2"); instrumenter.end(context, "test", null, null); - assertEquals("/route1", HttpRouteHolder.getRoute(context)); + assertEquals("/route1", HttpServerRoute.get(context)); assertThat(testing.getSpans()) .satisfiesExactly(span -> assertThat(span).hasName("GET /route1")); } @@ -111,14 +111,14 @@ class HttpRouteHolderTest { when(getter.getHttpRequestMethod("test")).thenReturn("GET"); Context context = instrumenter.start(Context.root(), "test"); - assertNull(HttpRouteHolder.getRoute(context)); + assertNull(HttpServerRoute.get(context)); - HttpRouteHolder.updateHttpRoute(context, HttpRouteSource.SERVLET, "/route1"); - HttpRouteHolder.updateHttpRoute(context, HttpRouteSource.CONTROLLER, "/route2"); + HttpServerRoute.update(context, HttpServerRouteSource.SERVER, "/route1"); + HttpServerRoute.update(context, HttpServerRouteSource.CONTROLLER, "/route2"); instrumenter.end(context, "test", null, null); - assertEquals("/route2", HttpRouteHolder.getRoute(context)); + assertEquals("/route2", HttpServerRoute.get(context)); assertThat(testing.getSpans()) .satisfiesExactly(span -> assertThat(span).hasName("GET /route2")); } @@ -128,14 +128,14 @@ class HttpRouteHolderTest { when(getter.getHttpRequestMethod("test")).thenReturn("GET"); Context context = instrumenter.start(Context.root(), "test"); - assertNull(HttpRouteHolder.getRoute(context)); + assertNull(HttpServerRoute.get(context)); - HttpRouteHolder.updateHttpRoute(context, HttpRouteSource.FILTER, "/a/route"); - HttpRouteHolder.updateHttpRoute(context, HttpRouteSource.FILTER, "/a/much/better/route"); + HttpServerRoute.update(context, HttpServerRouteSource.SERVER_FILTER, "/a/route"); + HttpServerRoute.update(context, HttpServerRouteSource.SERVER_FILTER, "/a/much/better/route"); instrumenter.end(context, "test", null, null); - assertEquals("/a/much/better/route", HttpRouteHolder.getRoute(context)); + assertEquals("/a/much/better/route", HttpServerRoute.get(context)); assertThat(testing.getSpans()) .satisfiesExactly(span -> assertThat(span).hasName("GET /a/much/better/route")); } @@ -145,14 +145,14 @@ class HttpRouteHolderTest { when(getter.getHttpRequestMethod("test")).thenReturn("GET"); Context context = instrumenter.start(Context.root(), "test"); - assertNull(HttpRouteHolder.getRoute(context)); + assertNull(HttpServerRoute.get(context)); - HttpRouteHolder.updateHttpRoute(context, HttpRouteSource.FILTER, "/a/pretty/good/route"); - HttpRouteHolder.updateHttpRoute(context, HttpRouteSource.FILTER, "/a"); + HttpServerRoute.update(context, HttpServerRouteSource.SERVER_FILTER, "/a/pretty/good/route"); + HttpServerRoute.update(context, HttpServerRouteSource.SERVER_FILTER, "/a"); instrumenter.end(context, "test", null, null); - assertEquals("/a/pretty/good/route", HttpRouteHolder.getRoute(context)); + assertEquals("/a/pretty/good/route", HttpServerRoute.get(context)); assertThat(testing.getSpans()) .satisfiesExactly(span -> assertThat(span).hasName("GET /a/pretty/good/route")); } @@ -162,13 +162,13 @@ class HttpRouteHolderTest { when(getter.getHttpRequestMethod("test")).thenReturn(null); Context context = instrumenter.start(Context.root(), "test"); - assertNull(HttpRouteHolder.getRoute(context)); + assertNull(HttpServerRoute.get(context)); - HttpRouteHolder.updateHttpRoute(context, HttpRouteSource.SERVLET, "/get/:id"); + HttpServerRoute.update(context, HttpServerRouteSource.SERVER, "/get/:id"); instrumenter.end(context, "test", null, null); - assertEquals("/get/:id", HttpRouteHolder.getRoute(context)); + assertEquals("/get/:id", HttpServerRoute.get(context)); assertThat(testing.getSpans()).satisfiesExactly(span -> assertThat(span).hasName("test")); } } diff --git a/instrumentation/akka/akka-http-10.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/akkahttp/server/AkkaHttpServerSingletons.java b/instrumentation/akka/akka-http-10.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/akkahttp/server/AkkaHttpServerSingletons.java index 046e04778d..3644601172 100644 --- a/instrumentation/akka/akka-http-10.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/akkahttp/server/AkkaHttpServerSingletons.java +++ b/instrumentation/akka/akka-http-10.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/akkahttp/server/AkkaHttpServerSingletons.java @@ -9,9 +9,9 @@ import akka.http.scaladsl.model.HttpRequest; import akka.http.scaladsl.model.HttpResponse; import io.opentelemetry.api.GlobalOpenTelemetry; import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteHolder; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerAttributesExtractor; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerMetrics; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRoute; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpSpanNameExtractor; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpSpanStatusExtractor; import io.opentelemetry.javaagent.bootstrap.internal.CommonConfig; @@ -36,7 +36,7 @@ public final class AkkaHttpServerSingletons { .setKnownMethods(CommonConfig.get().getKnownHttpRequestMethods()) .build()) .addOperationMetrics(HttpServerMetrics.get()) - .addContextCustomizer(HttpRouteHolder.create(httpAttributesGetter)) + .addContextCustomizer(HttpServerRoute.create(httpAttributesGetter)) .buildServerInstrumenter(AkkaHttpServerHeaders.INSTANCE); } diff --git a/instrumentation/armeria-1.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/armeria/v1_3/ServerDecorator.java b/instrumentation/armeria-1.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/armeria/v1_3/ServerDecorator.java index 102305b20d..d8a453bd02 100644 --- a/instrumentation/armeria-1.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/armeria/v1_3/ServerDecorator.java +++ b/instrumentation/armeria-1.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/armeria/v1_3/ServerDecorator.java @@ -14,8 +14,8 @@ import io.opentelemetry.api.trace.Span; import io.opentelemetry.api.trace.StatusCode; import io.opentelemetry.context.Context; import io.opentelemetry.instrumentation.api.instrumenter.ErrorCauseExtractor; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteHolder; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteSource; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRoute; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRouteSource; class ServerDecorator extends SimpleDecoratingHttpService { @@ -34,8 +34,8 @@ class ServerDecorator extends SimpleDecoratingHttpService { Context otelContext = Context.current(); - HttpRouteHolder.updateHttpRoute( - otelContext, HttpRouteSource.SERVLET, (context, name) -> name, matchedRoute); + HttpServerRoute.update( + otelContext, HttpServerRouteSource.SERVER, (context, name) -> name, matchedRoute); try { return unwrap().serve(ctx, req); diff --git a/instrumentation/armeria-1.3/library/src/main/java/io/opentelemetry/instrumentation/armeria/v1_3/ArmeriaTelemetryBuilder.java b/instrumentation/armeria-1.3/library/src/main/java/io/opentelemetry/instrumentation/armeria/v1_3/ArmeriaTelemetryBuilder.java index 87d88fbb5e..8a9e63825f 100644 --- a/instrumentation/armeria-1.3/library/src/main/java/io/opentelemetry/instrumentation/armeria/v1_3/ArmeriaTelemetryBuilder.java +++ b/instrumentation/armeria-1.3/library/src/main/java/io/opentelemetry/instrumentation/armeria/v1_3/ArmeriaTelemetryBuilder.java @@ -19,10 +19,10 @@ import io.opentelemetry.instrumentation.api.instrumenter.http.HttpClientAttribut import io.opentelemetry.instrumentation.api.instrumenter.http.HttpClientAttributesExtractorBuilder; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpClientExperimentalMetrics; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpClientMetrics; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteHolder; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerAttributesExtractor; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerAttributesExtractorBuilder; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerMetrics; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRoute; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpSpanNameExtractor; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpSpanStatusExtractor; import io.opentelemetry.instrumentation.armeria.v1_3.internal.ArmeriaHttpClientAttributesGetter; @@ -214,7 +214,7 @@ public final class ArmeriaTelemetryBuilder { HttpSpanStatusExtractor.create(serverAttributesGetter))) .addAttributesExtractor(httpServerAttributesExtractorBuilder.build()) .addOperationMetrics(HttpServerMetrics.get()) - .addContextCustomizer(HttpRouteHolder.create(serverAttributesGetter)); + .addContextCustomizer(HttpServerRoute.create(serverAttributesGetter)); if (peerService != null) { clientInstrumenterBuilder.addAttributesExtractor( diff --git a/instrumentation/camel-2.20/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachecamel/decorators/HttpSpanDecorator.java b/instrumentation/camel-2.20/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachecamel/decorators/HttpSpanDecorator.java index b2c461977e..0d02aa0814 100644 --- a/instrumentation/camel-2.20/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachecamel/decorators/HttpSpanDecorator.java +++ b/instrumentation/camel-2.20/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apachecamel/decorators/HttpSpanDecorator.java @@ -25,8 +25,8 @@ package io.opentelemetry.javaagent.instrumentation.apachecamel.decorators; import io.opentelemetry.api.common.AttributesBuilder; import io.opentelemetry.context.Context; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteHolder; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteSource; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRoute; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRouteSource; import io.opentelemetry.javaagent.instrumentation.apachecamel.CamelDirection; import io.opentelemetry.semconv.trace.attributes.SemanticAttributes; import java.net.MalformedURLException; @@ -122,9 +122,9 @@ class HttpSpanDecorator extends BaseSpanDecorator { if (!shouldAppendHttpRoute(camelDirection)) { return; } - HttpRouteHolder.updateHttpRoute( + HttpServerRoute.update( context, - HttpRouteSource.CONTROLLER, + HttpServerRouteSource.CONTROLLER, (c, exchange, endpoint) -> getPath(exchange, endpoint), camelExchange, camelEndpoint); diff --git a/instrumentation/finatra-2.9/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/finatra/FinatraSingletons.java b/instrumentation/finatra-2.9/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/finatra/FinatraSingletons.java index b9215f21db..0f2796d020 100644 --- a/instrumentation/finatra-2.9/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/finatra/FinatraSingletons.java +++ b/instrumentation/finatra-2.9/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/finatra/FinatraSingletons.java @@ -11,8 +11,8 @@ import io.opentelemetry.context.Context; import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter; import io.opentelemetry.instrumentation.api.instrumenter.code.CodeAttributesExtractor; import io.opentelemetry.instrumentation.api.instrumenter.code.CodeSpanNameExtractor; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteHolder; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteSource; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRoute; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRouteSource; public final class FinatraSingletons { @@ -34,8 +34,8 @@ public final class FinatraSingletons { } public static void updateServerSpanName(Context context, RouteInfo routeInfo) { - HttpRouteHolder.updateHttpRoute( - context, HttpRouteSource.CONTROLLER, (c, route) -> route.path(), routeInfo); + HttpServerRoute.update( + context, HttpServerRouteSource.CONTROLLER, (c, route) -> route.path(), routeInfo); } private FinatraSingletons() {} diff --git a/instrumentation/grails-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/grails/GrailsServerSpanNaming.java b/instrumentation/grails-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/grails/GrailsServerSpanNaming.java index 620b455205..01c69fe35a 100644 --- a/instrumentation/grails-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/grails/GrailsServerSpanNaming.java +++ b/instrumentation/grails-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/grails/GrailsServerSpanNaming.java @@ -5,13 +5,13 @@ package io.opentelemetry.javaagent.instrumentation.grails; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteGetter; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRouteGetter; import io.opentelemetry.javaagent.bootstrap.servlet.ServletContextPath; import org.grails.web.mapping.mvc.GrailsControllerUrlMappingInfo; public class GrailsServerSpanNaming { - public static final HttpRouteGetter SERVER_SPAN_NAME = + public static final HttpServerRouteGetter SERVER_SPAN_NAME = (context, info) -> { String action = info.getActionName() != null diff --git a/instrumentation/grails-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/grails/UrlMappingsInfoHandlerAdapterInstrumentation.java b/instrumentation/grails-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/grails/UrlMappingsInfoHandlerAdapterInstrumentation.java index 91c09f4b22..5b17eb8663 100644 --- a/instrumentation/grails-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/grails/UrlMappingsInfoHandlerAdapterInstrumentation.java +++ b/instrumentation/grails-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/grails/UrlMappingsInfoHandlerAdapterInstrumentation.java @@ -5,7 +5,6 @@ package io.opentelemetry.javaagent.instrumentation.grails; -import static io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteSource.CONTROLLER; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.isPublic; import static net.bytebuddy.matcher.ElementMatchers.named; @@ -13,7 +12,8 @@ import static net.bytebuddy.matcher.ElementMatchers.takesArgument; import static net.bytebuddy.matcher.ElementMatchers.takesArguments; import io.opentelemetry.context.Context; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteHolder; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRoute; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRouteSource; import io.opentelemetry.javaagent.bootstrap.Java8BytecodeBridge; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; @@ -48,9 +48,9 @@ public class UrlMappingsInfoHandlerAdapterInstrumentation implements TypeInstrum if (handler instanceof GrailsControllerUrlMappingInfo) { Context parentContext = Java8BytecodeBridge.currentContext(); - HttpRouteHolder.updateHttpRoute( + HttpServerRoute.update( parentContext, - CONTROLLER, + HttpServerRouteSource.CONTROLLER, GrailsServerSpanNaming.SERVER_SPAN_NAME, (GrailsControllerUrlMappingInfo) handler); } diff --git a/instrumentation/grizzly-2.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/grizzly/GrizzlySingletons.java b/instrumentation/grizzly-2.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/grizzly/GrizzlySingletons.java index b9567f199b..5cda6811d8 100644 --- a/instrumentation/grizzly-2.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/grizzly/GrizzlySingletons.java +++ b/instrumentation/grizzly-2.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/grizzly/GrizzlySingletons.java @@ -7,9 +7,9 @@ package io.opentelemetry.javaagent.instrumentation.grizzly; import io.opentelemetry.api.GlobalOpenTelemetry; import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteHolder; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerAttributesExtractor; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerMetrics; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRoute; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpSpanNameExtractor; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpSpanStatusExtractor; import io.opentelemetry.javaagent.bootstrap.internal.CommonConfig; @@ -45,7 +45,7 @@ public final class GrizzlySingletons { .init(context)) .addContextCustomizer( (context, httpRequestPacket, startAttributes) -> GrizzlyErrorHolder.init(context)) - .addContextCustomizer(HttpRouteHolder.create(httpAttributesGetter)) + .addContextCustomizer(HttpServerRoute.create(httpAttributesGetter)) .buildServerInstrumenter(HttpRequestHeadersGetter.INSTANCE); } diff --git a/instrumentation/jaxrs/jaxrs-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v1_0/JaxrsAnnotationsInstrumentation.java b/instrumentation/jaxrs/jaxrs-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v1_0/JaxrsAnnotationsInstrumentation.java index 00e75dd3f0..2eb8ff95a8 100644 --- a/instrumentation/jaxrs/jaxrs-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v1_0/JaxrsAnnotationsInstrumentation.java +++ b/instrumentation/jaxrs/jaxrs-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v1_0/JaxrsAnnotationsInstrumentation.java @@ -19,8 +19,8 @@ import static net.bytebuddy.matcher.ElementMatchers.not; import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteHolder; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteSource; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRoute; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRouteSource; import io.opentelemetry.javaagent.bootstrap.CallDepth; import io.opentelemetry.javaagent.bootstrap.Java8BytecodeBridge; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; @@ -83,9 +83,9 @@ public class JaxrsAnnotationsInstrumentation implements TypeInstrumentation { Context parentContext = Java8BytecodeBridge.currentContext(); handlerData = new HandlerData(target.getClass(), method); - HttpRouteHolder.updateHttpRoute( + HttpServerRoute.update( parentContext, - HttpRouteSource.CONTROLLER, + HttpServerRouteSource.CONTROLLER, JaxrsServerSpanNaming.SERVER_SPAN_NAME, handlerData); diff --git a/instrumentation/jaxrs/jaxrs-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v1_0/JaxrsServerSpanNaming.java b/instrumentation/jaxrs/jaxrs-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v1_0/JaxrsServerSpanNaming.java index 24d81c86af..c4972bc5c6 100644 --- a/instrumentation/jaxrs/jaxrs-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v1_0/JaxrsServerSpanNaming.java +++ b/instrumentation/jaxrs/jaxrs-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v1_0/JaxrsServerSpanNaming.java @@ -5,13 +5,13 @@ package io.opentelemetry.javaagent.instrumentation.jaxrs.v1_0; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteGetter; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRouteGetter; import io.opentelemetry.javaagent.bootstrap.jaxrs.JaxrsContextPath; import io.opentelemetry.javaagent.bootstrap.servlet.ServletContextPath; public class JaxrsServerSpanNaming { - public static final HttpRouteGetter SERVER_SPAN_NAME = + public static final HttpServerRouteGetter SERVER_SPAN_NAME = (context, handlerData) -> { String pathBasedSpanName = handlerData.getServerSpanName(); // If path based name is empty skip prepending context path so that path based name would diff --git a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-annotations/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/DefaultRequestContextInstrumentation.java b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-annotations/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/DefaultRequestContextInstrumentation.java index 7c903bbd84..8f928b9bee 100644 --- a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-annotations/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/DefaultRequestContextInstrumentation.java +++ b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-annotations/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/DefaultRequestContextInstrumentation.java @@ -9,8 +9,8 @@ import static io.opentelemetry.javaagent.instrumentation.jaxrs.v2_0.JaxrsAnnotat import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteHolder; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteSource; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRoute; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRouteSource; import io.opentelemetry.javaagent.bootstrap.Java8BytecodeBridge; import io.opentelemetry.javaagent.instrumentation.jaxrs.JaxrsConstants; import io.opentelemetry.javaagent.instrumentation.jaxrs.JaxrsServerSpanNaming; @@ -64,9 +64,9 @@ public class DefaultRequestContextInstrumentation extends AbstractRequestContext Context parentContext = Java8BytecodeBridge.currentContext(); handlerData = new Jaxrs2HandlerData(filterClass, method); - HttpRouteHolder.updateHttpRoute( + HttpServerRoute.update( parentContext, - HttpRouteSource.CONTROLLER, + HttpServerRouteSource.CONTROLLER, JaxrsServerSpanNaming.SERVER_SPAN_NAME, handlerData); diff --git a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-annotations/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/JaxrsAnnotationsInstrumentation.java b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-annotations/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/JaxrsAnnotationsInstrumentation.java index 87f957abed..0d6ee9da48 100644 --- a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-annotations/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/JaxrsAnnotationsInstrumentation.java +++ b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-annotations/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/JaxrsAnnotationsInstrumentation.java @@ -18,8 +18,8 @@ import static net.bytebuddy.matcher.ElementMatchers.not; import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteHolder; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteSource; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRoute; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRouteSource; import io.opentelemetry.instrumentation.api.util.VirtualField; import io.opentelemetry.javaagent.bootstrap.CallDepth; import io.opentelemetry.javaagent.bootstrap.Java8BytecodeBridge; @@ -105,9 +105,9 @@ public class JaxrsAnnotationsInstrumentation implements TypeInstrumentation { Context parentContext = Java8BytecodeBridge.currentContext(); handlerData = new Jaxrs2HandlerData(target.getClass(), method); - HttpRouteHolder.updateHttpRoute( + HttpServerRoute.update( parentContext, - HttpRouteSource.CONTROLLER, + HttpServerRouteSource.CONTROLLER, JaxrsServerSpanNaming.SERVER_SPAN_NAME, handlerData); diff --git a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-cxf-3.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/CxfSpanName.java b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-cxf-3.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/CxfSpanName.java index c156c16190..a1ab6b8e7e 100644 --- a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-cxf-3.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/CxfSpanName.java +++ b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-cxf-3.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/CxfSpanName.java @@ -8,9 +8,9 @@ package io.opentelemetry.javaagent.instrumentation.jaxrs.v2_0; import static io.opentelemetry.javaagent.instrumentation.jaxrs.JaxrsPathUtil.normalizePath; import io.opentelemetry.context.Context; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteGetter; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteHolder; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteSource; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRoute; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRouteGetter; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRouteSource; import io.opentelemetry.javaagent.bootstrap.jaxrs.JaxrsContextPath; import io.opentelemetry.javaagent.bootstrap.servlet.ServletContextPath; import org.apache.cxf.jaxrs.model.ClassResourceInfo; @@ -18,7 +18,7 @@ import org.apache.cxf.jaxrs.model.OperationResourceInfo; import org.apache.cxf.jaxrs.model.URITemplate; import org.apache.cxf.message.Exchange; -public final class CxfSpanName implements HttpRouteGetter { +public final class CxfSpanName implements HttpServerRouteGetter { public static final CxfSpanName INSTANCE = new CxfSpanName(); @@ -26,7 +26,7 @@ public final class CxfSpanName implements HttpRouteGetter { Context context = Context.current(); String jaxrsName = calculateJaxrsName(context, exchange); - HttpRouteHolder.updateHttpRoute(context, HttpRouteSource.NESTED_CONTROLLER, this, jaxrsName); + HttpServerRoute.update(context, HttpServerRouteSource.NESTED_CONTROLLER, this, jaxrsName); return JaxrsContextPath.init(context, jaxrsName); } diff --git a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-jersey-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/JerseySpanName.java b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-jersey-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/JerseySpanName.java index bcb0d83523..29a5534d67 100644 --- a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-jersey-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/JerseySpanName.java +++ b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-jersey-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/JerseySpanName.java @@ -8,9 +8,9 @@ package io.opentelemetry.javaagent.instrumentation.jaxrs.v2_0; import static io.opentelemetry.javaagent.instrumentation.jaxrs.JaxrsPathUtil.normalizePath; import io.opentelemetry.context.Context; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteGetter; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteHolder; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteSource; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRoute; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRouteGetter; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRouteSource; import io.opentelemetry.javaagent.bootstrap.jaxrs.JaxrsContextPath; import io.opentelemetry.javaagent.bootstrap.servlet.ServletContextPath; import javax.annotation.Nullable; @@ -19,13 +19,13 @@ import javax.ws.rs.core.UriInfo; import org.glassfish.jersey.server.ContainerRequest; import org.glassfish.jersey.server.ExtendedUriInfo; -public class JerseySpanName implements HttpRouteGetter { +public class JerseySpanName implements HttpServerRouteGetter { public static final JerseySpanName INSTANCE = new JerseySpanName(); public void updateServerSpanName(Request request) { Context context = Context.current(); - HttpRouteHolder.updateHttpRoute(context, HttpRouteSource.NESTED_CONTROLLER, this, request); + HttpServerRoute.update(context, HttpServerRouteSource.NESTED_CONTROLLER, this, request); } @Override diff --git a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-resteasy-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/ResteasySpanName.java b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-resteasy-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/ResteasySpanName.java index bf7d2ddbe7..4fa0e80588 100644 --- a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-resteasy-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/ResteasySpanName.java +++ b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-resteasy-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/ResteasySpanName.java @@ -5,22 +5,21 @@ package io.opentelemetry.javaagent.instrumentation.jaxrs.v2_0; -import static io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteSource.NESTED_CONTROLLER; - import io.opentelemetry.context.Context; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteGetter; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteHolder; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRoute; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRouteGetter; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRouteSource; import io.opentelemetry.javaagent.bootstrap.jaxrs.JaxrsContextPath; import io.opentelemetry.javaagent.bootstrap.servlet.ServletContextPath; import javax.annotation.Nullable; -public final class ResteasySpanName implements HttpRouteGetter { +public final class ResteasySpanName implements HttpServerRouteGetter { public static final ResteasySpanName INSTANCE = new ResteasySpanName(); public void updateServerSpanName(Context context, String name) { if (name != null) { - HttpRouteHolder.updateHttpRoute(context, NESTED_CONTROLLER, this, name); + HttpServerRoute.update(context, HttpServerRouteSource.NESTED_CONTROLLER, this, name); } } diff --git a/instrumentation/jaxrs/jaxrs-3.0/jaxrs-3.0-annotations/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v3_0/DefaultRequestContextInstrumentation.java b/instrumentation/jaxrs/jaxrs-3.0/jaxrs-3.0-annotations/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v3_0/DefaultRequestContextInstrumentation.java index 8960484733..32b83bbf1b 100644 --- a/instrumentation/jaxrs/jaxrs-3.0/jaxrs-3.0-annotations/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v3_0/DefaultRequestContextInstrumentation.java +++ b/instrumentation/jaxrs/jaxrs-3.0/jaxrs-3.0-annotations/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v3_0/DefaultRequestContextInstrumentation.java @@ -9,8 +9,8 @@ import static io.opentelemetry.javaagent.instrumentation.jaxrs.v3_0.JaxrsAnnotat import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteHolder; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteSource; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRoute; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRouteSource; import io.opentelemetry.javaagent.bootstrap.Java8BytecodeBridge; import io.opentelemetry.javaagent.instrumentation.jaxrs.JaxrsConstants; import io.opentelemetry.javaagent.instrumentation.jaxrs.JaxrsServerSpanNaming; @@ -64,9 +64,9 @@ public class DefaultRequestContextInstrumentation extends AbstractRequestContext Context parentContext = Java8BytecodeBridge.currentContext(); handlerData = new Jaxrs3HandlerData(filterClass, method); - HttpRouteHolder.updateHttpRoute( + HttpServerRoute.update( parentContext, - HttpRouteSource.CONTROLLER, + HttpServerRouteSource.CONTROLLER, JaxrsServerSpanNaming.SERVER_SPAN_NAME, handlerData); diff --git a/instrumentation/jaxrs/jaxrs-3.0/jaxrs-3.0-annotations/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v3_0/JaxrsAnnotationsInstrumentation.java b/instrumentation/jaxrs/jaxrs-3.0/jaxrs-3.0-annotations/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v3_0/JaxrsAnnotationsInstrumentation.java index e27e9d6168..1997bd31b3 100644 --- a/instrumentation/jaxrs/jaxrs-3.0/jaxrs-3.0-annotations/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v3_0/JaxrsAnnotationsInstrumentation.java +++ b/instrumentation/jaxrs/jaxrs-3.0/jaxrs-3.0-annotations/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v3_0/JaxrsAnnotationsInstrumentation.java @@ -18,8 +18,8 @@ import static net.bytebuddy.matcher.ElementMatchers.not; import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteHolder; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteSource; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRoute; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRouteSource; import io.opentelemetry.instrumentation.api.util.VirtualField; import io.opentelemetry.javaagent.bootstrap.CallDepth; import io.opentelemetry.javaagent.bootstrap.Java8BytecodeBridge; @@ -105,9 +105,9 @@ public class JaxrsAnnotationsInstrumentation implements TypeInstrumentation { Context parentContext = Java8BytecodeBridge.currentContext(); handlerData = new Jaxrs3HandlerData(target.getClass(), method); - HttpRouteHolder.updateHttpRoute( + HttpServerRoute.update( parentContext, - HttpRouteSource.CONTROLLER, + HttpServerRouteSource.CONTROLLER, JaxrsServerSpanNaming.SERVER_SPAN_NAME, handlerData); diff --git a/instrumentation/jaxrs/jaxrs-3.0/jaxrs-3.0-jersey-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v3_0/JerseySpanName.java b/instrumentation/jaxrs/jaxrs-3.0/jaxrs-3.0-jersey-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v3_0/JerseySpanName.java index 6089334fd5..7a41cd591c 100644 --- a/instrumentation/jaxrs/jaxrs-3.0/jaxrs-3.0-jersey-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v3_0/JerseySpanName.java +++ b/instrumentation/jaxrs/jaxrs-3.0/jaxrs-3.0-jersey-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v3_0/JerseySpanName.java @@ -8,9 +8,9 @@ package io.opentelemetry.javaagent.instrumentation.jaxrs.v3_0; import static io.opentelemetry.javaagent.instrumentation.jaxrs.JaxrsPathUtil.normalizePath; import io.opentelemetry.context.Context; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteGetter; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteHolder; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteSource; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRoute; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRouteGetter; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRouteSource; import io.opentelemetry.javaagent.bootstrap.jaxrs.JaxrsContextPath; import io.opentelemetry.javaagent.bootstrap.servlet.ServletContextPath; import jakarta.ws.rs.core.Request; @@ -19,13 +19,13 @@ import javax.annotation.Nullable; import org.glassfish.jersey.server.ContainerRequest; import org.glassfish.jersey.server.ExtendedUriInfo; -public class JerseySpanName implements HttpRouteGetter { +public class JerseySpanName implements HttpServerRouteGetter { public static final JerseySpanName INSTANCE = new JerseySpanName(); public void updateServerSpanName(Request request) { Context context = Context.current(); - HttpRouteHolder.updateHttpRoute(context, HttpRouteSource.NESTED_CONTROLLER, this, request); + HttpServerRoute.update(context, HttpServerRouteSource.NESTED_CONTROLLER, this, request); } @Override diff --git a/instrumentation/jaxrs/jaxrs-3.0/jaxrs-3.0-resteasy-6.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v3_0/ResteasySpanName.java b/instrumentation/jaxrs/jaxrs-3.0/jaxrs-3.0-resteasy-6.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v3_0/ResteasySpanName.java index 9aff95c67e..177528db68 100644 --- a/instrumentation/jaxrs/jaxrs-3.0/jaxrs-3.0-resteasy-6.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v3_0/ResteasySpanName.java +++ b/instrumentation/jaxrs/jaxrs-3.0/jaxrs-3.0-resteasy-6.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v3_0/ResteasySpanName.java @@ -5,22 +5,21 @@ package io.opentelemetry.javaagent.instrumentation.jaxrs.v3_0; -import static io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteSource.NESTED_CONTROLLER; - import io.opentelemetry.context.Context; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteGetter; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteHolder; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRoute; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRouteGetter; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRouteSource; import io.opentelemetry.javaagent.bootstrap.jaxrs.JaxrsContextPath; import io.opentelemetry.javaagent.bootstrap.servlet.ServletContextPath; import javax.annotation.Nullable; -public final class ResteasySpanName implements HttpRouteGetter { +public final class ResteasySpanName implements HttpServerRouteGetter { public static final ResteasySpanName INSTANCE = new ResteasySpanName(); public void updateServerSpanName(Context context, String name) { if (name != null) { - HttpRouteHolder.updateHttpRoute(context, NESTED_CONTROLLER, this, name); + HttpServerRoute.update(context, HttpServerRouteSource.NESTED_CONTROLLER, this, name); } } diff --git a/instrumentation/jaxrs/jaxrs-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/JaxrsServerSpanNaming.java b/instrumentation/jaxrs/jaxrs-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/JaxrsServerSpanNaming.java index f65bd2f99b..a6eb7796c9 100644 --- a/instrumentation/jaxrs/jaxrs-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/JaxrsServerSpanNaming.java +++ b/instrumentation/jaxrs/jaxrs-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/JaxrsServerSpanNaming.java @@ -5,13 +5,13 @@ package io.opentelemetry.javaagent.instrumentation.jaxrs; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteGetter; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRouteGetter; import io.opentelemetry.javaagent.bootstrap.jaxrs.JaxrsContextPath; import io.opentelemetry.javaagent.bootstrap.servlet.ServletContextPath; public class JaxrsServerSpanNaming { - public static final HttpRouteGetter SERVER_SPAN_NAME = + public static final HttpServerRouteGetter SERVER_SPAN_NAME = (context, handlerData) -> { String pathBasedSpanName = handlerData.getServerSpanName(); // If path based name is empty skip prepending context path so that path based name would diff --git a/instrumentation/jaxrs/jaxrs-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/RequestContextHelper.java b/instrumentation/jaxrs/jaxrs-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/RequestContextHelper.java index 5adf1e0580..098ae6f73a 100644 --- a/instrumentation/jaxrs/jaxrs-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/RequestContextHelper.java +++ b/instrumentation/jaxrs/jaxrs-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/RequestContextHelper.java @@ -9,8 +9,8 @@ import io.opentelemetry.api.trace.Span; import io.opentelemetry.context.Context; import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter; import io.opentelemetry.instrumentation.api.instrumenter.LocalRootSpan; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteHolder; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteSource; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRoute; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRouteSource; import io.opentelemetry.javaagent.bootstrap.Java8BytecodeBridge; public final class RequestContextHelper { @@ -21,9 +21,9 @@ public final class RequestContextHelper { Span serverSpan = LocalRootSpan.fromContextOrNull(parentContext); Span currentSpan = Java8BytecodeBridge.spanFromContext(parentContext); - HttpRouteHolder.updateHttpRoute( + HttpServerRoute.update( parentContext, - HttpRouteSource.CONTROLLER, + HttpServerRouteSource.CONTROLLER, JaxrsServerSpanNaming.SERVER_SPAN_NAME, handlerData); diff --git a/instrumentation/ktor/ktor-1.0/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v1_0/KtorServerTracing.kt b/instrumentation/ktor/ktor-1.0/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v1_0/KtorServerTracing.kt index 6ecc43d93c..6ef644bc55 100644 --- a/instrumentation/ktor/ktor-1.0/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v1_0/KtorServerTracing.kt +++ b/instrumentation/ktor/ktor-1.0/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v1_0/KtorServerTracing.kt @@ -18,10 +18,10 @@ import io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter import io.opentelemetry.instrumentation.api.instrumenter.SpanKindExtractor import io.opentelemetry.instrumentation.api.instrumenter.SpanStatusExtractor -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteHolder -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteSource import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerAttributesExtractor import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerMetrics +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRoute +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRouteSource import io.opentelemetry.instrumentation.api.instrumenter.http.HttpSpanNameExtractor import io.opentelemetry.instrumentation.api.instrumenter.http.HttpSpanStatusExtractor import io.opentelemetry.instrumentation.api.internal.InstrumenterUtil @@ -121,7 +121,7 @@ class KtorServerTracing private constructor( setSpanStatusExtractor(configuration.statusExtractor(HttpSpanStatusExtractor.create(httpAttributesGetter))) addAttributesExtractor(configuration.httpAttributesExtractorBuilder.build()) addOperationMetrics(HttpServerMetrics.get()) - addContextCustomizer(HttpRouteHolder.create(httpAttributesGetter)) + addContextCustomizer(HttpServerRoute.create(httpAttributesGetter)) } val instrumenter = InstrumenterUtil.buildUpstreamInstrumenter( @@ -175,7 +175,7 @@ class KtorServerTracing private constructor( pipeline.environment.monitor.subscribe(Routing.RoutingCallStarted) { call -> val context = call.attributes.getOrNull(contextKey) if (context != null) { - HttpRouteHolder.updateHttpRoute(context, HttpRouteSource.SERVLET, { _, arg -> arg.route.parent.toString() }, call) + HttpServerRoute.update(context, HttpServerRouteSource.SERVER, { _, arg -> arg.route.parent.toString() }, call) } } diff --git a/instrumentation/ktor/ktor-2.0/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v2_0/server/KtorServerTracing.kt b/instrumentation/ktor/ktor-2.0/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v2_0/server/KtorServerTracing.kt index f6d10b6b21..03dbc7d6f0 100644 --- a/instrumentation/ktor/ktor-2.0/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v2_0/server/KtorServerTracing.kt +++ b/instrumentation/ktor/ktor-2.0/library/src/main/kotlin/io/opentelemetry/instrumentation/ktor/v2_0/server/KtorServerTracing.kt @@ -18,10 +18,10 @@ import io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter import io.opentelemetry.instrumentation.api.instrumenter.SpanKindExtractor import io.opentelemetry.instrumentation.api.instrumenter.SpanStatusExtractor -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteHolder -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteSource import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerAttributesExtractor import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerMetrics +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRoute +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRouteSource import io.opentelemetry.instrumentation.api.instrumenter.http.HttpSpanNameExtractor import io.opentelemetry.instrumentation.api.instrumenter.http.HttpSpanStatusExtractor import io.opentelemetry.instrumentation.api.internal.InstrumenterUtil @@ -121,7 +121,7 @@ class KtorServerTracing private constructor( setSpanStatusExtractor(configuration.statusExtractor(HttpSpanStatusExtractor.create(httpAttributesGetter))) addAttributesExtractor(configuration.httpAttributesExtractorBuilder.build()) addOperationMetrics(HttpServerMetrics.get()) - addContextCustomizer(HttpRouteHolder.create(httpAttributesGetter)) + addContextCustomizer(HttpServerRoute.create(httpAttributesGetter)) } val instrumenter = InstrumenterUtil.buildUpstreamInstrumenter( @@ -173,7 +173,7 @@ class KtorServerTracing private constructor( } pipeline.environment.monitor.subscribe(Routing.RoutingCallStarted) { call -> - HttpRouteHolder.updateHttpRoute(Context.current(), HttpRouteSource.SERVLET, { _, arg -> arg.route.parent.toString() }, call) + HttpServerRoute.update(Context.current(), HttpServerRouteSource.SERVER, { _, arg -> arg.route.parent.toString() }, call) } return feature diff --git a/instrumentation/liberty/liberty-dispatcher-20.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/liberty/dispatcher/LibertyDispatcherSingletons.java b/instrumentation/liberty/liberty-dispatcher-20.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/liberty/dispatcher/LibertyDispatcherSingletons.java index 9cc5bc2786..5f302c56af 100644 --- a/instrumentation/liberty/liberty-dispatcher-20.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/liberty/dispatcher/LibertyDispatcherSingletons.java +++ b/instrumentation/liberty/liberty-dispatcher-20.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/liberty/dispatcher/LibertyDispatcherSingletons.java @@ -7,9 +7,9 @@ package io.opentelemetry.javaagent.instrumentation.liberty.dispatcher; import io.opentelemetry.api.GlobalOpenTelemetry; import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteHolder; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerAttributesExtractor; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerMetrics; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRoute; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpSpanNameExtractor; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpSpanStatusExtractor; import io.opentelemetry.javaagent.bootstrap.internal.CommonConfig; @@ -35,7 +35,7 @@ public final class LibertyDispatcherSingletons { .setCapturedResponseHeaders(CommonConfig.get().getServerResponseHeaders()) .setKnownMethods(CommonConfig.get().getKnownHttpRequestMethods()) .build()) - .addContextCustomizer(HttpRouteHolder.create(httpAttributesGetter)) + .addContextCustomizer(HttpServerRoute.create(httpAttributesGetter)) .addOperationMetrics(HttpServerMetrics.get()) .buildServerInstrumenter(LibertyDispatcherRequestGetter.INSTANCE); } diff --git a/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/server/NettyServerSingletons.java b/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/server/NettyServerSingletons.java index 2644520390..d94fae6789 100644 --- a/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/server/NettyServerSingletons.java +++ b/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/server/NettyServerSingletons.java @@ -7,9 +7,9 @@ package io.opentelemetry.javaagent.instrumentation.netty.v3_8.server; import io.opentelemetry.api.GlobalOpenTelemetry; import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteHolder; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerAttributesExtractor; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerMetrics; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRoute; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpSpanNameExtractor; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpSpanStatusExtractor; import io.opentelemetry.instrumentation.netty.common.internal.NettyErrorHolder; @@ -40,7 +40,7 @@ final class NettyServerSingletons { .addOperationMetrics(HttpServerMetrics.get()) .addContextCustomizer( (context, requestAndChannel, startAttributes) -> NettyErrorHolder.init(context)) - .addContextCustomizer(HttpRouteHolder.create(httpServerAttributesGetter)) + .addContextCustomizer(HttpServerRoute.create(httpServerAttributesGetter)) .buildServerInstrumenter(NettyHeadersGetter.INSTANCE); } diff --git a/instrumentation/netty/netty-4-common/library/src/main/java/io/opentelemetry/instrumentation/netty/v4/common/internal/server/NettyServerInstrumenterFactory.java b/instrumentation/netty/netty-4-common/library/src/main/java/io/opentelemetry/instrumentation/netty/v4/common/internal/server/NettyServerInstrumenterFactory.java index 01ac51a9b4..7900e3a3a3 100644 --- a/instrumentation/netty/netty-4-common/library/src/main/java/io/opentelemetry/instrumentation/netty/v4/common/internal/server/NettyServerInstrumenterFactory.java +++ b/instrumentation/netty/netty-4-common/library/src/main/java/io/opentelemetry/instrumentation/netty/v4/common/internal/server/NettyServerInstrumenterFactory.java @@ -8,10 +8,10 @@ package io.opentelemetry.instrumentation.netty.v4.common.internal.server; import io.netty.handler.codec.http.HttpResponse; import io.opentelemetry.api.OpenTelemetry; import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteHolder; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerAttributesExtractor; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerAttributesExtractorBuilder; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerMetrics; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRoute; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpSpanNameExtractor; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpSpanStatusExtractor; import io.opentelemetry.instrumentation.netty.common.internal.NettyErrorHolder; @@ -42,7 +42,7 @@ public final class NettyServerInstrumenterFactory { .addAttributesExtractor(extractorBuilder.build()) .addOperationMetrics(HttpServerMetrics.get()) .addContextCustomizer((context, request, attributes) -> NettyErrorHolder.init(context)) - .addContextCustomizer(HttpRouteHolder.create(httpAttributesGetter)) + .addContextCustomizer(HttpServerRoute.create(httpAttributesGetter)) .buildServerInstrumenter(HttpRequestHeadersGetter.INSTANCE); } diff --git a/instrumentation/okhttp/okhttp-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/okhttp/v3_0/OkHttp3Singletons.java b/instrumentation/okhttp/okhttp-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/okhttp/v3_0/OkHttp3Singletons.java index 126913c15a..514d597202 100644 --- a/instrumentation/okhttp/okhttp-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/okhttp/v3_0/OkHttp3Singletons.java +++ b/instrumentation/okhttp/okhttp-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/okhttp/v3_0/OkHttp3Singletons.java @@ -11,7 +11,7 @@ import io.opentelemetry.api.GlobalOpenTelemetry; import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpClientResend; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpClientResendCount; import io.opentelemetry.instrumentation.api.instrumenter.net.PeerServiceAttributesExtractor; import io.opentelemetry.instrumentation.okhttp.v3_0.internal.ConnectionErrorSpanInterceptor; import io.opentelemetry.instrumentation.okhttp.v3_0.internal.OkHttpAttributesGetter; @@ -40,7 +40,7 @@ public final class OkHttp3Singletons { public static final Interceptor CONTEXT_INTERCEPTOR = chain -> { - try (Scope ignored = HttpClientResend.initialize(Context.current()).makeCurrent()) { + try (Scope ignored = HttpClientResendCount.initialize(Context.current()).makeCurrent()) { return chain.proceed(chain.request()); } }; diff --git a/instrumentation/okhttp/okhttp-3.0/library/src/main/java/io/opentelemetry/instrumentation/okhttp/v3_0/ContextInterceptor.java b/instrumentation/okhttp/okhttp-3.0/library/src/main/java/io/opentelemetry/instrumentation/okhttp/v3_0/ContextInterceptor.java index c003b629ac..fff420b12b 100644 --- a/instrumentation/okhttp/okhttp-3.0/library/src/main/java/io/opentelemetry/instrumentation/okhttp/v3_0/ContextInterceptor.java +++ b/instrumentation/okhttp/okhttp-3.0/library/src/main/java/io/opentelemetry/instrumentation/okhttp/v3_0/ContextInterceptor.java @@ -7,7 +7,7 @@ package io.opentelemetry.instrumentation.okhttp.v3_0; import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpClientResend; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpClientResendCount; import java.io.IOException; import okhttp3.Interceptor; import okhttp3.Request; @@ -23,7 +23,7 @@ final class ContextInterceptor implements Interceptor { parentContext = Context.current(); } // include the resend counter - Context context = HttpClientResend.initialize(parentContext); + Context context = HttpClientResendCount.initialize(parentContext); try (Scope ignored = context.makeCurrent()) { return chain.proceed(request); } diff --git a/instrumentation/okhttp/okhttp-3.0/library/src/main/java/io/opentelemetry/instrumentation/okhttp/v3_0/internal/ConnectionErrorSpanInterceptor.java b/instrumentation/okhttp/okhttp-3.0/library/src/main/java/io/opentelemetry/instrumentation/okhttp/v3_0/internal/ConnectionErrorSpanInterceptor.java index b877c3416f..164162a057 100644 --- a/instrumentation/okhttp/okhttp-3.0/library/src/main/java/io/opentelemetry/instrumentation/okhttp/v3_0/internal/ConnectionErrorSpanInterceptor.java +++ b/instrumentation/okhttp/okhttp-3.0/library/src/main/java/io/opentelemetry/instrumentation/okhttp/v3_0/internal/ConnectionErrorSpanInterceptor.java @@ -7,7 +7,7 @@ package io.opentelemetry.instrumentation.okhttp.v3_0.internal; import io.opentelemetry.context.Context; import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpClientResend; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpClientResendCount; import io.opentelemetry.instrumentation.api.internal.InstrumenterUtil; import java.io.IOException; import java.time.Instant; @@ -42,7 +42,7 @@ public final class ConnectionErrorSpanInterceptor implements Interceptor { throw t; } finally { // only create a span when there wasn't any HTTP request - if (HttpClientResend.get(parentContext) == 0) { + if (HttpClientResendCount.get(parentContext) == 0) { if (instrumenter.shouldStart(parentContext, request)) { InstrumenterUtil.startAndEnd( instrumenter, parentContext, request, response, error, startTime, Instant.now()); diff --git a/instrumentation/opentelemetry-instrumentation-api/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/instrumentationapi/ContextBridgeTest.java b/instrumentation/opentelemetry-instrumentation-api/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/instrumentationapi/ContextBridgeTest.java index b3de3e53a8..e5f6758df9 100644 --- a/instrumentation/opentelemetry-instrumentation-api/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/instrumentationapi/ContextBridgeTest.java +++ b/instrumentation/opentelemetry-instrumentation-api/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/instrumentationapi/ContextBridgeTest.java @@ -12,8 +12,8 @@ import io.opentelemetry.api.trace.Span; import io.opentelemetry.api.trace.SpanKind; import io.opentelemetry.context.Context; import io.opentelemetry.instrumentation.api.instrumenter.LocalRootSpan; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteHolder; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteSource; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRoute; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRouteSource; import io.opentelemetry.instrumentation.api.internal.SpanKey; import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; @@ -80,8 +80,8 @@ class ContextBridgeTest { AgentSpanTesting.runWithHttpServerSpan( "server", () -> - HttpRouteHolder.updateHttpRoute( - Context.current(), HttpRouteSource.SERVLET, "/test/controller/:id")); + HttpServerRoute.update( + Context.current(), HttpServerRouteSource.SERVER, "/test/controller/:id")); testing.waitAndAssertTraces( trace -> @@ -100,8 +100,8 @@ class ContextBridgeTest { AgentSpanTesting.runWithHttpServerSpan( "server", () -> - HttpRouteHolder.updateHttpRoute( - Context.current(), HttpRouteSource.CONTROLLER, "/test/controller/:id")); + HttpServerRoute.update( + Context.current(), HttpServerRouteSource.CONTROLLER, "/test/controller/:id")); testing.waitAndAssertTraces( trace -> diff --git a/instrumentation/opentelemetry-instrumentation-api/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/testing/AgentSpanTestingInstrumenter.java b/instrumentation/opentelemetry-instrumentation-api/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/testing/AgentSpanTestingInstrumenter.java index ac83a016f8..0c0cb0709f 100644 --- a/instrumentation/opentelemetry-instrumentation-api/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/testing/AgentSpanTestingInstrumenter.java +++ b/instrumentation/opentelemetry-instrumentation-api/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/testing/AgentSpanTestingInstrumenter.java @@ -11,9 +11,9 @@ import io.opentelemetry.context.Context; import io.opentelemetry.context.ContextKey; import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter; import io.opentelemetry.instrumentation.api.instrumenter.SpanKindExtractor; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteHolder; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteSource; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerAttributesExtractor; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRoute; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRouteSource; import io.opentelemetry.instrumentation.api.internal.SpanKey; public final class AgentSpanTestingInstrumenter { @@ -31,14 +31,14 @@ public final class AgentSpanTestingInstrumenter { Instrumenter.builder(GlobalOpenTelemetry.get(), "test", request -> request) .addAttributesExtractor( HttpServerAttributesExtractor.create(MockHttpServerAttributesGetter.INSTANCE)) - .addContextCustomizer(HttpRouteHolder.create(MockHttpServerAttributesGetter.INSTANCE)) + .addContextCustomizer(HttpServerRoute.create(MockHttpServerAttributesGetter.INSTANCE)) .addContextCustomizer( (context, request, startAttributes) -> context.with(REQUEST_CONTEXT_KEY, request)) .buildInstrumenter(SpanKindExtractor.alwaysServer()); public static Context startHttpServerSpan(String name) { Context context = HTTP_SERVER_INSTRUMENTER.start(Context.current(), name); - HttpRouteHolder.updateHttpRoute(context, HttpRouteSource.SERVLET, "/test/server/*"); + HttpServerRoute.update(context, HttpServerRouteSource.SERVER, "/test/server/*"); return context; } diff --git a/instrumentation/play/play-mvc/play-mvc-2.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/play/v2_4/Play24Singletons.java b/instrumentation/play/play-mvc/play-mvc-2.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/play/v2_4/Play24Singletons.java index 62c62af1c0..fa3b9f984f 100644 --- a/instrumentation/play/play-mvc/play-mvc-2.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/play/v2_4/Play24Singletons.java +++ b/instrumentation/play/play-mvc/play-mvc-2.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/play/v2_4/Play24Singletons.java @@ -9,8 +9,8 @@ import io.opentelemetry.api.GlobalOpenTelemetry; import io.opentelemetry.api.trace.Span; import io.opentelemetry.context.Context; import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteHolder; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteSource; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRoute; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRouteSource; import play.api.mvc.Request; import scala.Option; @@ -33,7 +33,7 @@ public final class Play24Singletons { } Span.fromContext(context).updateName(route); - HttpRouteHolder.updateHttpRoute(context, HttpRouteSource.CONTROLLER, route); + HttpServerRoute.update(context, HttpServerRouteSource.CONTROLLER, route); } private static String getRoute(Request request) { diff --git a/instrumentation/play/play-mvc/play-mvc-2.6/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/play/v2_6/Play26Singletons.java b/instrumentation/play/play-mvc/play-mvc-2.6/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/play/v2_6/Play26Singletons.java index 40c5e8857a..314a229cf2 100644 --- a/instrumentation/play/play-mvc/play-mvc-2.6/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/play/v2_6/Play26Singletons.java +++ b/instrumentation/play/play-mvc/play-mvc-2.6/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/play/v2_6/Play26Singletons.java @@ -9,8 +9,8 @@ import io.opentelemetry.api.GlobalOpenTelemetry; import io.opentelemetry.api.trace.Span; import io.opentelemetry.context.Context; import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteHolder; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteSource; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRoute; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRouteSource; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import javax.annotation.Nullable; @@ -60,7 +60,7 @@ public final class Play26Singletons { } Span.fromContext(context).updateName(route); - HttpRouteHolder.updateHttpRoute(context, HttpRouteSource.CONTROLLER, route); + HttpServerRoute.update(context, HttpServerRouteSource.CONTROLLER, route); } private static String getRoute(Request request) { diff --git a/instrumentation/quarkus-resteasy-reactive/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/quarkus/resteasy/reactive/OtelRequestContext.java b/instrumentation/quarkus-resteasy-reactive/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/quarkus/resteasy/reactive/OtelRequestContext.java index 6b14ac9ed1..7471da4871 100644 --- a/instrumentation/quarkus-resteasy-reactive/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/quarkus/resteasy/reactive/OtelRequestContext.java +++ b/instrumentation/quarkus-resteasy-reactive/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/quarkus/resteasy/reactive/OtelRequestContext.java @@ -5,7 +5,6 @@ package io.opentelemetry.javaagent.instrumentation.quarkus.resteasy.reactive; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteSource; import org.jboss.resteasy.reactive.server.core.ResteasyReactiveRequestContext; public final class OtelRequestContext { @@ -15,8 +14,7 @@ public final class OtelRequestContext { public static OtelRequestContext start(ResteasyReactiveRequestContext requestContext) { OtelRequestContext context = new OtelRequestContext(); contextThreadLocal.set(context); - ResteasyReactiveSpanName.INSTANCE.updateServerSpanName( - requestContext, HttpRouteSource.NESTED_CONTROLLER); + ResteasyReactiveSpanName.INSTANCE.updateServerSpanName(requestContext); return context; } @@ -31,8 +29,7 @@ public final class OtelRequestContext { context.firstInvoke = false; return; } - ResteasyReactiveSpanName.INSTANCE.updateServerSpanName( - requestContext, HttpRouteSource.NESTED_CONTROLLER); + ResteasyReactiveSpanName.INSTANCE.updateServerSpanName(requestContext); } public void close() { diff --git a/instrumentation/quarkus-resteasy-reactive/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/quarkus/resteasy/reactive/ResteasyReactiveSpanName.java b/instrumentation/quarkus-resteasy-reactive/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/quarkus/resteasy/reactive/ResteasyReactiveSpanName.java index 1f14607d89..3206b57503 100644 --- a/instrumentation/quarkus-resteasy-reactive/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/quarkus/resteasy/reactive/ResteasyReactiveSpanName.java +++ b/instrumentation/quarkus-resteasy-reactive/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/quarkus/resteasy/reactive/ResteasyReactiveSpanName.java @@ -8,8 +8,8 @@ package io.opentelemetry.javaagent.instrumentation.quarkus.resteasy.reactive; import static io.opentelemetry.javaagent.instrumentation.jaxrs.JaxrsPathUtil.normalizePath; import io.opentelemetry.context.Context; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteHolder; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteSource; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRoute; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRouteSource; import io.opentelemetry.instrumentation.api.util.VirtualField; import org.jboss.resteasy.reactive.server.core.ResteasyReactiveRequestContext; import org.jboss.resteasy.reactive.server.mapping.RuntimeResource; @@ -22,10 +22,10 @@ final class ResteasyReactiveSpanName { public static final ResteasyReactiveSpanName INSTANCE = new ResteasyReactiveSpanName(); - void updateServerSpanName(ResteasyReactiveRequestContext requestContext, HttpRouteSource source) { + void updateServerSpanName(ResteasyReactiveRequestContext requestContext) { Context context = Context.current(); String jaxRsName = calculateJaxRsName(requestContext); - HttpRouteHolder.updateHttpRoute(context, source, jaxRsName); + HttpServerRoute.update(context, HttpServerRouteSource.NESTED_CONTROLLER, jaxRsName); pathField.set(requestContext, jaxRsName); } diff --git a/instrumentation/ratpack/ratpack-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/ratpack/RatpackSingletons.java b/instrumentation/ratpack/ratpack-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/ratpack/RatpackSingletons.java index 4e386bf6ef..d7769ea846 100644 --- a/instrumentation/ratpack/ratpack-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/ratpack/RatpackSingletons.java +++ b/instrumentation/ratpack/ratpack-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/ratpack/RatpackSingletons.java @@ -10,8 +10,8 @@ import io.opentelemetry.api.trace.Span; import io.opentelemetry.api.trace.StatusCode; import io.opentelemetry.instrumentation.api.instrumenter.ErrorCauseExtractor; import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteHolder; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteSource; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRoute; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRouteSource; import ratpack.handling.Context; public final class RatpackSingletons { @@ -41,8 +41,8 @@ public final class RatpackSingletons { } // update the netty server span name; FILTER is probably the best match for ratpack Handlers - HttpRouteHolder.updateHttpRoute( - otelContext, HttpRouteSource.FILTER, (context, name) -> name, matchedRoute); + HttpServerRoute.update( + otelContext, HttpServerRouteSource.SERVER_FILTER, (context, name) -> name, matchedRoute); return matchedRoute; } diff --git a/instrumentation/ratpack/ratpack-1.7/library/src/main/java/io/opentelemetry/instrumentation/ratpack/v1_7/OpenTelemetryServerHandler.java b/instrumentation/ratpack/ratpack-1.7/library/src/main/java/io/opentelemetry/instrumentation/ratpack/v1_7/OpenTelemetryServerHandler.java index a4be09605a..f3996e4cdc 100644 --- a/instrumentation/ratpack/ratpack-1.7/library/src/main/java/io/opentelemetry/instrumentation/ratpack/v1_7/OpenTelemetryServerHandler.java +++ b/instrumentation/ratpack/ratpack-1.7/library/src/main/java/io/opentelemetry/instrumentation/ratpack/v1_7/OpenTelemetryServerHandler.java @@ -5,11 +5,11 @@ package io.opentelemetry.instrumentation.ratpack.v1_7; -import static io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteSource.CONTROLLER; +import static io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRouteSource.CONTROLLER; import io.opentelemetry.context.Scope; import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteHolder; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRoute; import ratpack.error.ServerErrorHandler; import ratpack.handling.Context; import ratpack.handling.Handler; @@ -39,7 +39,7 @@ public final class OpenTelemetryServerHandler implements Handler { context.onClose( outcome -> { // Route not available in beginning of request so handle it manually here. - HttpRouteHolder.updateHttpRoute( + HttpServerRoute.update( otelCtx, CONTROLLER, OpenTelemetryServerHandler::getRoute, context); Throwable error = diff --git a/instrumentation/ratpack/ratpack-1.7/library/src/main/java/io/opentelemetry/instrumentation/ratpack/v1_7/RatpackTelemetryBuilder.java b/instrumentation/ratpack/ratpack-1.7/library/src/main/java/io/opentelemetry/instrumentation/ratpack/v1_7/RatpackTelemetryBuilder.java index af3cca7605..9b51683b5c 100644 --- a/instrumentation/ratpack/ratpack-1.7/library/src/main/java/io/opentelemetry/instrumentation/ratpack/v1_7/RatpackTelemetryBuilder.java +++ b/instrumentation/ratpack/ratpack-1.7/library/src/main/java/io/opentelemetry/instrumentation/ratpack/v1_7/RatpackTelemetryBuilder.java @@ -11,10 +11,10 @@ import io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor; import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpClientAttributesExtractor; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpClientAttributesExtractorBuilder; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteHolder; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerAttributesExtractor; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerAttributesExtractorBuilder; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerMetrics; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRoute; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpSpanNameExtractor; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpSpanStatusExtractor; import java.util.ArrayList; @@ -142,7 +142,7 @@ public final class RatpackTelemetryBuilder { .addAttributesExtractor(httpServerAttributesExtractorBuilder.build()) .addAttributesExtractors(additionalExtractors) .addOperationMetrics(HttpServerMetrics.get()) - .addContextCustomizer(HttpRouteHolder.create(httpAttributes)) + .addContextCustomizer(HttpServerRoute.create(httpAttributes)) .buildServerInstrumenter(RatpackGetter.INSTANCE); return new RatpackTelemetry(instrumenter, httpClientInstrumenter()); diff --git a/instrumentation/reactor/reactor-netty/reactor-netty-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v1_0/HttpResponseReceiverInstrumenter.java b/instrumentation/reactor/reactor-netty/reactor-netty-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v1_0/HttpResponseReceiverInstrumenter.java index e2524adab5..1a31d51ebd 100644 --- a/instrumentation/reactor/reactor-netty/reactor-netty-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v1_0/HttpResponseReceiverInstrumenter.java +++ b/instrumentation/reactor/reactor-netty/reactor-netty-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v1_0/HttpResponseReceiverInstrumenter.java @@ -8,7 +8,7 @@ package io.opentelemetry.javaagent.instrumentation.reactornetty.v1_0; import static io.opentelemetry.javaagent.instrumentation.reactornetty.v1_0.ReactorContextKeys.CONTEXTS_HOLDER_KEY; import io.opentelemetry.context.Context; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpClientResend; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpClientResendCount; import io.opentelemetry.instrumentation.netty.v4_1.NettyClientTelemetry; import java.util.function.BiConsumer; import java.util.function.Function; @@ -118,7 +118,7 @@ public final class HttpResponseReceiverInstrumenter { public void accept(HttpClientRequest request, Throwable error) { instrumentationContexts.endClientSpan(null, error); - if (HttpClientResend.get(instrumentationContexts.getParentContext()) == 0) { + if (HttpClientResendCount.get(instrumentationContexts.getParentContext()) == 0) { // request is an instance of FailedHttpClientRequest, which does not implement a correct // resourceUrl() method -- we have to work around that request = FailedRequestWithUrlMaker.create(config, request); diff --git a/instrumentation/reactor/reactor-netty/reactor-netty-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v1_0/InstrumentationContexts.java b/instrumentation/reactor/reactor-netty/reactor-netty-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v1_0/InstrumentationContexts.java index b42c7f5140..fddc5f15c3 100644 --- a/instrumentation/reactor/reactor-netty/reactor-netty-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v1_0/InstrumentationContexts.java +++ b/instrumentation/reactor/reactor-netty/reactor-netty-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/reactornetty/v1_0/InstrumentationContexts.java @@ -8,7 +8,7 @@ package io.opentelemetry.javaagent.instrumentation.reactornetty.v1_0; import static io.opentelemetry.javaagent.instrumentation.reactornetty.v1_0.ReactorNettySingletons.instrumenter; import io.opentelemetry.context.Context; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpClientResend; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpClientResendCount; import io.opentelemetry.instrumentation.api.internal.InstrumenterUtil; import io.opentelemetry.instrumentation.api.internal.Timer; import java.util.Queue; @@ -27,7 +27,7 @@ final class InstrumentationContexts { private final Queue clientContexts = new LinkedBlockingQueue<>(); void initialize(Context parentContext) { - this.parentContext = HttpClientResend.initialize(parentContext); + this.parentContext = HttpClientResendCount.initialize(parentContext); timer = Timer.start(); } diff --git a/instrumentation/restlet/restlet-1.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/restlet/v1_1/RestletSingletons.java b/instrumentation/restlet/restlet-1.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/restlet/v1_1/RestletSingletons.java index 09a7965a5e..8f9681ca81 100644 --- a/instrumentation/restlet/restlet-1.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/restlet/v1_1/RestletSingletons.java +++ b/instrumentation/restlet/restlet-1.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/restlet/v1_1/RestletSingletons.java @@ -7,7 +7,7 @@ package io.opentelemetry.javaagent.instrumentation.restlet.v1_1; import io.opentelemetry.api.GlobalOpenTelemetry; import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteGetter; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRouteGetter; import io.opentelemetry.instrumentation.restlet.v1_1.RestletTelemetry; import io.opentelemetry.javaagent.bootstrap.internal.CommonConfig; import io.opentelemetry.javaagent.bootstrap.servlet.ServletContextPath; @@ -28,7 +28,7 @@ public final class RestletSingletons { return INSTRUMENTER; } - public static HttpRouteGetter serverSpanName() { + public static HttpServerRouteGetter serverSpanName() { return ServletContextPath::prepend; } diff --git a/instrumentation/restlet/restlet-1.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/restlet/v1_1/RouteInstrumentation.java b/instrumentation/restlet/restlet-1.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/restlet/v1_1/RouteInstrumentation.java index ebd1c7f55f..af96db742e 100644 --- a/instrumentation/restlet/restlet-1.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/restlet/v1_1/RouteInstrumentation.java +++ b/instrumentation/restlet/restlet-1.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/restlet/v1_1/RouteInstrumentation.java @@ -5,14 +5,14 @@ package io.opentelemetry.javaagent.instrumentation.restlet.v1_1; -import static io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteSource.CONTROLLER; +import static io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRouteSource.CONTROLLER; import static io.opentelemetry.javaagent.bootstrap.Java8BytecodeBridge.currentContext; import static io.opentelemetry.javaagent.instrumentation.restlet.v1_1.RestletSingletons.serverSpanName; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.takesArgument; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteHolder; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRoute; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import net.bytebuddy.asm.Advice; @@ -44,7 +44,7 @@ public class RouteInstrumentation implements TypeInstrumentation { public static void getRouteInfo(@Advice.This Route route, @Advice.Argument(0) Request request) { String pattern = route.getTemplate().getPattern(); - HttpRouteHolder.updateHttpRoute(currentContext(), CONTROLLER, serverSpanName(), pattern); + HttpServerRoute.update(currentContext(), CONTROLLER, serverSpanName(), pattern); } } } diff --git a/instrumentation/restlet/restlet-1.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/restlet/v1_1/ServerInstrumentation.java b/instrumentation/restlet/restlet-1.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/restlet/v1_1/ServerInstrumentation.java index b62a490ecb..9213cfd72f 100644 --- a/instrumentation/restlet/restlet-1.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/restlet/v1_1/ServerInstrumentation.java +++ b/instrumentation/restlet/restlet-1.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/restlet/v1_1/ServerInstrumentation.java @@ -5,7 +5,7 @@ package io.opentelemetry.javaagent.instrumentation.restlet.v1_1; -import static io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteSource.CONTROLLER; +import static io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRouteSource.CONTROLLER; import static io.opentelemetry.javaagent.bootstrap.Java8BytecodeBridge.currentContext; import static io.opentelemetry.javaagent.instrumentation.restlet.v1_1.RestletSingletons.instrumenter; import static io.opentelemetry.javaagent.instrumentation.restlet.v1_1.RestletSingletons.serverSpanName; @@ -15,7 +15,7 @@ import static net.bytebuddy.matcher.ElementMatchers.takesArgument; import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteHolder; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRoute; import io.opentelemetry.javaagent.bootstrap.http.HttpServerResponseCustomizerHolder; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; @@ -77,7 +77,7 @@ public class ServerInstrumentation implements TypeInstrumentation { scope.close(); if (Status.CLIENT_ERROR_NOT_FOUND.equals(response.getStatus())) { - HttpRouteHolder.updateHttpRoute(context, CONTROLLER, serverSpanName(), "/*"); + HttpServerRoute.update(context, CONTROLLER, serverSpanName(), "/*"); } HttpServerResponseCustomizerHolder.getCustomizer() diff --git a/instrumentation/restlet/restlet-1.1/library/src/main/java/io/opentelemetry/instrumentation/restlet/v1_1/RestletTelemetryBuilder.java b/instrumentation/restlet/restlet-1.1/library/src/main/java/io/opentelemetry/instrumentation/restlet/v1_1/RestletTelemetryBuilder.java index 678f00394d..53fbec3034 100644 --- a/instrumentation/restlet/restlet-1.1/library/src/main/java/io/opentelemetry/instrumentation/restlet/v1_1/RestletTelemetryBuilder.java +++ b/instrumentation/restlet/restlet-1.1/library/src/main/java/io/opentelemetry/instrumentation/restlet/v1_1/RestletTelemetryBuilder.java @@ -9,10 +9,10 @@ import com.google.errorprone.annotations.CanIgnoreReturnValue; import io.opentelemetry.api.OpenTelemetry; import io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor; import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteHolder; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerAttributesExtractor; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerAttributesExtractorBuilder; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerMetrics; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRoute; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpSpanNameExtractor; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpSpanStatusExtractor; import java.util.ArrayList; @@ -105,7 +105,7 @@ public final class RestletTelemetryBuilder { .addAttributesExtractor(httpAttributesExtractorBuilder.build()) .addAttributesExtractors(additionalExtractors) .addOperationMetrics(HttpServerMetrics.get()) - .addContextCustomizer(HttpRouteHolder.create(httpAttributesGetter)) + .addContextCustomizer(HttpServerRoute.create(httpAttributesGetter)) .buildServerInstrumenter(RestletHeadersGetter.INSTANCE); return new RestletTelemetry(instrumenter); diff --git a/instrumentation/restlet/restlet-1.1/library/src/main/java/io/opentelemetry/instrumentation/restlet/v1_1/TracingFilter.java b/instrumentation/restlet/restlet-1.1/library/src/main/java/io/opentelemetry/instrumentation/restlet/v1_1/TracingFilter.java index 1b13e5b206..dd26533937 100644 --- a/instrumentation/restlet/restlet-1.1/library/src/main/java/io/opentelemetry/instrumentation/restlet/v1_1/TracingFilter.java +++ b/instrumentation/restlet/restlet-1.1/library/src/main/java/io/opentelemetry/instrumentation/restlet/v1_1/TracingFilter.java @@ -5,12 +5,12 @@ package io.opentelemetry.instrumentation.restlet.v1_1; -import static io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteSource.CONTROLLER; +import static io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRouteSource.CONTROLLER; import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteHolder; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRoute; import org.restlet.Filter; import org.restlet.data.Request; import org.restlet.data.Response; @@ -38,7 +38,7 @@ final class TracingFilter extends Filter { scope = context.makeCurrent(); } - HttpRouteHolder.updateHttpRoute(context, CONTROLLER, (ctx, s) -> s, path); + HttpServerRoute.update(context, CONTROLLER, (ctx, s) -> s, path); Throwable statusThrowable = null; try { diff --git a/instrumentation/restlet/restlet-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/restlet/v2_0/RestletSingletons.java b/instrumentation/restlet/restlet-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/restlet/v2_0/RestletSingletons.java index f4474970d3..1dcfc1bcf0 100644 --- a/instrumentation/restlet/restlet-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/restlet/v2_0/RestletSingletons.java +++ b/instrumentation/restlet/restlet-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/restlet/v2_0/RestletSingletons.java @@ -7,8 +7,8 @@ package io.opentelemetry.javaagent.instrumentation.restlet.v2_0; import io.opentelemetry.api.GlobalOpenTelemetry; import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteGetter; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerAttributesExtractor; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRouteGetter; import io.opentelemetry.instrumentation.restlet.v2_0.internal.RestletHttpAttributesGetter; import io.opentelemetry.instrumentation.restlet.v2_0.internal.RestletInstrumenterFactory; import io.opentelemetry.javaagent.bootstrap.internal.CommonConfig; @@ -33,7 +33,7 @@ public final class RestletSingletons { return INSTRUMENTER; } - public static HttpRouteGetter serverSpanName() { + public static HttpServerRouteGetter serverSpanName() { return ServletContextPath::prepend; } diff --git a/instrumentation/restlet/restlet-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/restlet/v2_0/RouteInstrumentation.java b/instrumentation/restlet/restlet-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/restlet/v2_0/RouteInstrumentation.java index 29b588710f..b314373d71 100644 --- a/instrumentation/restlet/restlet-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/restlet/v2_0/RouteInstrumentation.java +++ b/instrumentation/restlet/restlet-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/restlet/v2_0/RouteInstrumentation.java @@ -5,7 +5,7 @@ package io.opentelemetry.javaagent.instrumentation.restlet.v2_0; -import static io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteSource.CONTROLLER; +import static io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRouteSource.CONTROLLER; import static io.opentelemetry.javaagent.bootstrap.Java8BytecodeBridge.currentContext; import static io.opentelemetry.javaagent.instrumentation.restlet.v2_0.RestletSingletons.serverSpanName; import static net.bytebuddy.matcher.ElementMatchers.isMethod; @@ -13,7 +13,7 @@ import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.namedOneOf; import static net.bytebuddy.matcher.ElementMatchers.takesArgument; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteHolder; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRoute; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import net.bytebuddy.asm.Advice; @@ -46,7 +46,7 @@ public class RouteInstrumentation implements TypeInstrumentation { @Advice.This TemplateRoute route, @Advice.Argument(0) Request request) { String pattern = route.getTemplate().getPattern(); - HttpRouteHolder.updateHttpRoute(currentContext(), CONTROLLER, serverSpanName(), pattern); + HttpServerRoute.update(currentContext(), CONTROLLER, serverSpanName(), pattern); } } } diff --git a/instrumentation/restlet/restlet-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/restlet/v2_0/ServerInstrumentation.java b/instrumentation/restlet/restlet-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/restlet/v2_0/ServerInstrumentation.java index 5c6023cb78..175e4ab9f3 100644 --- a/instrumentation/restlet/restlet-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/restlet/v2_0/ServerInstrumentation.java +++ b/instrumentation/restlet/restlet-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/restlet/v2_0/ServerInstrumentation.java @@ -5,7 +5,7 @@ package io.opentelemetry.javaagent.instrumentation.restlet.v2_0; -import static io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteSource.CONTROLLER; +import static io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRouteSource.CONTROLLER; import static io.opentelemetry.javaagent.bootstrap.Java8BytecodeBridge.currentContext; import static io.opentelemetry.javaagent.instrumentation.restlet.v2_0.RestletSingletons.instrumenter; import static io.opentelemetry.javaagent.instrumentation.restlet.v2_0.RestletSingletons.serverSpanName; @@ -15,7 +15,7 @@ import static net.bytebuddy.matcher.ElementMatchers.takesArgument; import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteHolder; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRoute; import io.opentelemetry.javaagent.bootstrap.http.HttpServerResponseCustomizerHolder; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; @@ -77,7 +77,7 @@ public class ServerInstrumentation implements TypeInstrumentation { scope.close(); if (Status.CLIENT_ERROR_NOT_FOUND.equals(response.getStatus())) { - HttpRouteHolder.updateHttpRoute(context, CONTROLLER, serverSpanName(), "/*"); + HttpServerRoute.update(context, CONTROLLER, serverSpanName(), "/*"); } HttpServerResponseCustomizerHolder.getCustomizer() diff --git a/instrumentation/restlet/restlet-2.0/library/src/main/java/io/opentelemetry/instrumentation/restlet/v2_0/TracingFilter.java b/instrumentation/restlet/restlet-2.0/library/src/main/java/io/opentelemetry/instrumentation/restlet/v2_0/TracingFilter.java index 05d0923610..9ee6f4da0d 100644 --- a/instrumentation/restlet/restlet-2.0/library/src/main/java/io/opentelemetry/instrumentation/restlet/v2_0/TracingFilter.java +++ b/instrumentation/restlet/restlet-2.0/library/src/main/java/io/opentelemetry/instrumentation/restlet/v2_0/TracingFilter.java @@ -5,12 +5,12 @@ package io.opentelemetry.instrumentation.restlet.v2_0; -import static io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteSource.CONTROLLER; +import static io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRouteSource.CONTROLLER; import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteHolder; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRoute; import org.restlet.Request; import org.restlet.Response; import org.restlet.resource.ResourceException; @@ -39,7 +39,7 @@ final class TracingFilter extends Filter { scope = context.makeCurrent(); } - HttpRouteHolder.updateHttpRoute(context, CONTROLLER, (ctx, s) -> s, path); + HttpServerRoute.update(context, CONTROLLER, (ctx, s) -> s, path); Throwable statusThrowable = null; try { diff --git a/instrumentation/restlet/restlet-2.0/library/src/main/java/io/opentelemetry/instrumentation/restlet/v2_0/internal/RestletInstrumenterFactory.java b/instrumentation/restlet/restlet-2.0/library/src/main/java/io/opentelemetry/instrumentation/restlet/v2_0/internal/RestletInstrumenterFactory.java index 9a67815f71..453eb0586d 100644 --- a/instrumentation/restlet/restlet-2.0/library/src/main/java/io/opentelemetry/instrumentation/restlet/v2_0/internal/RestletInstrumenterFactory.java +++ b/instrumentation/restlet/restlet-2.0/library/src/main/java/io/opentelemetry/instrumentation/restlet/v2_0/internal/RestletInstrumenterFactory.java @@ -8,8 +8,8 @@ package io.opentelemetry.instrumentation.restlet.v2_0.internal; import io.opentelemetry.api.OpenTelemetry; import io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor; import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteHolder; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerMetrics; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRoute; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpSpanNameExtractor; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpSpanStatusExtractor; import java.util.List; @@ -37,7 +37,7 @@ public final class RestletInstrumenterFactory { .addAttributesExtractor(httpServerAttributesExtractor) .addAttributesExtractors(additionalExtractors) .addOperationMetrics(HttpServerMetrics.get()) - .addContextCustomizer(HttpRouteHolder.create(httpAttributesGetter)) + .addContextCustomizer(HttpServerRoute.create(httpAttributesGetter)) .buildServerInstrumenter(new RestletHeadersGetter()); } diff --git a/instrumentation/servlet/servlet-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/BaseServletHelper.java b/instrumentation/servlet/servlet-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/BaseServletHelper.java index c03f72552e..99fe45d3a6 100644 --- a/instrumentation/servlet/servlet-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/BaseServletHelper.java +++ b/instrumentation/servlet/servlet-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/BaseServletHelper.java @@ -5,15 +5,15 @@ package io.opentelemetry.javaagent.instrumentation.servlet; -import static io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteSource.FILTER; -import static io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteSource.SERVLET; +import static io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRouteSource.SERVER; +import static io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRouteSource.SERVER_FILTER; import io.opentelemetry.api.trace.Span; import io.opentelemetry.api.trace.SpanContext; import io.opentelemetry.context.Context; import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter; import io.opentelemetry.instrumentation.api.instrumenter.LocalRootSpan; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteHolder; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRoute; import io.opentelemetry.javaagent.bootstrap.servlet.AppServerBridge; import io.opentelemetry.javaagent.bootstrap.servlet.MappingResolver; import io.opentelemetry.javaagent.bootstrap.servlet.ServletContextPath; @@ -86,8 +86,8 @@ public abstract class BaseServletHelper { Context context, REQUEST request, MappingResolver mappingResolver, boolean servlet) { Context result = addServletContextPath(context, request); if (mappingResolver != null) { - HttpRouteHolder.updateHttpRoute( - result, servlet ? SERVLET : FILTER, spanNameProvider, mappingResolver, request); + HttpServerRoute.update( + result, servlet ? SERVER : SERVER_FILTER, spanNameProvider, mappingResolver, request); } return result; diff --git a/instrumentation/servlet/servlet-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/ServletInstrumenterBuilder.java b/instrumentation/servlet/servlet-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/ServletInstrumenterBuilder.java index c14f0e06c0..16a672bae7 100644 --- a/instrumentation/servlet/servlet-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/ServletInstrumenterBuilder.java +++ b/instrumentation/servlet/servlet-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/ServletInstrumenterBuilder.java @@ -12,10 +12,10 @@ import io.opentelemetry.instrumentation.api.instrumenter.ContextCustomizer; import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter; import io.opentelemetry.instrumentation.api.instrumenter.InstrumenterBuilder; import io.opentelemetry.instrumentation.api.instrumenter.SpanNameExtractor; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteHolder; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerAttributesExtractor; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerAttributesGetter; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerMetrics; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRoute; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpSpanNameExtractor; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpSpanStatusExtractor; import io.opentelemetry.javaagent.bootstrap.internal.CommonConfig; @@ -65,7 +65,7 @@ public final class ServletInstrumenterBuilder { .build()) .addAttributesExtractor(additionalAttributesExtractor) .addOperationMetrics(HttpServerMetrics.get()) - .addContextCustomizer(HttpRouteHolder.create(httpAttributesGetter)); + .addContextCustomizer(HttpServerRoute.create(httpAttributesGetter)); if (ServletRequestParametersExtractor.enabled()) { AttributesExtractor, ServletResponseContext> requestParametersExtractor = new ServletRequestParametersExtractor<>(accessor); diff --git a/instrumentation/servlet/servlet-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/ServletSpanNameProvider.java b/instrumentation/servlet/servlet-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/ServletSpanNameProvider.java index 7c22758fcb..f26b304d41 100644 --- a/instrumentation/servlet/servlet-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/ServletSpanNameProvider.java +++ b/instrumentation/servlet/servlet-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/ServletSpanNameProvider.java @@ -6,14 +6,14 @@ package io.opentelemetry.javaagent.instrumentation.servlet; import io.opentelemetry.context.Context; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteBiGetter; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRouteBiGetter; import io.opentelemetry.javaagent.bootstrap.servlet.MappingResolver; import io.opentelemetry.javaagent.bootstrap.servlet.ServletContextPath; import javax.annotation.Nullable; /** Helper class for constructing span name for given servlet/filter mapping and request. */ public class ServletSpanNameProvider - implements HttpRouteBiGetter { + implements HttpServerRouteBiGetter { private final ServletAccessor servletAccessor; public ServletSpanNameProvider(ServletAccessor servletAccessor) { diff --git a/instrumentation/spark-2.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/sparkjava/SparkRouteUpdater.java b/instrumentation/spark-2.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/sparkjava/SparkRouteUpdater.java index eedef6d43c..bf516b8c91 100644 --- a/instrumentation/spark-2.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/sparkjava/SparkRouteUpdater.java +++ b/instrumentation/spark-2.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/sparkjava/SparkRouteUpdater.java @@ -6,8 +6,8 @@ package io.opentelemetry.javaagent.instrumentation.sparkjava; import io.opentelemetry.context.Context; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteHolder; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteSource; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRoute; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRouteSource; import javax.annotation.Nullable; import spark.routematch.RouteMatch; @@ -16,8 +16,8 @@ public final class SparkRouteUpdater { public static void updateHttpRoute(@Nullable RouteMatch routeMatch) { if (routeMatch != null) { Context context = Context.current(); - HttpRouteHolder.updateHttpRoute( - context, HttpRouteSource.CONTROLLER, (c, r) -> r.getMatchUri(), routeMatch); + HttpServerRoute.update( + context, HttpServerRouteSource.CONTROLLER, (c, r) -> r.getMatchUri(), routeMatch); } } diff --git a/instrumentation/spring/spring-webflux/spring-webflux-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/webflux/v5_0/server/HandlerAdapterInstrumentation.java b/instrumentation/spring/spring-webflux/spring-webflux-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/webflux/v5_0/server/HandlerAdapterInstrumentation.java index 9660a1c398..f63b92422c 100644 --- a/instrumentation/spring/spring-webflux/spring-webflux-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/webflux/v5_0/server/HandlerAdapterInstrumentation.java +++ b/instrumentation/spring/spring-webflux/spring-webflux-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/webflux/v5_0/server/HandlerAdapterInstrumentation.java @@ -19,8 +19,8 @@ import static net.bytebuddy.matcher.ElementMatchers.takesArguments; import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteHolder; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteSource; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRoute; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRouteSource; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import net.bytebuddy.asm.Advice; @@ -69,8 +69,8 @@ public class HandlerAdapterInstrumentation implements TypeInstrumentation { // using the last portion of the nested path. // HttpRouteSource.NESTED_CONTROLLER has useFirst false, and it will make http.route updated // twice: 1st using the last portion of the nested path, 2nd time using the full nested path. - HttpRouteHolder.updateHttpRoute( - parentContext, HttpRouteSource.NESTED_CONTROLLER, httpRouteGetter(), exchange); + HttpServerRoute.update( + parentContext, HttpServerRouteSource.NESTED_CONTROLLER, httpRouteGetter(), exchange); if (handler == null) { return; diff --git a/instrumentation/spring/spring-webflux/spring-webflux-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/webflux/v5_0/server/RouteOnSuccess.java b/instrumentation/spring/spring-webflux/spring-webflux-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/webflux/v5_0/server/RouteOnSuccess.java index 01bed3c5cd..b353b70c1e 100644 --- a/instrumentation/spring/spring-webflux/spring-webflux-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/webflux/v5_0/server/RouteOnSuccess.java +++ b/instrumentation/spring/spring-webflux/spring-webflux-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/webflux/v5_0/server/RouteOnSuccess.java @@ -6,8 +6,8 @@ package io.opentelemetry.javaagent.instrumentation.spring.webflux.v5_0.server; import io.opentelemetry.context.Context; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteHolder; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteSource; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRoute; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRouteSource; import java.util.function.Consumer; import java.util.regex.Pattern; import javax.annotation.Nullable; @@ -29,7 +29,7 @@ public class RouteOnSuccess implements Consumer> { @Override public void accept(HandlerFunction handler) { - HttpRouteHolder.updateHttpRoute(Context.current(), HttpRouteSource.CONTROLLER, route); + HttpServerRoute.update(Context.current(), HttpServerRouteSource.CONTROLLER, route); } private static String parsePredicateString(RouterFunction routerFunction) { diff --git a/instrumentation/spring/spring-webflux/spring-webflux-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/webflux/v5_0/server/WebfluxSingletons.java b/instrumentation/spring/spring-webflux/spring-webflux-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/webflux/v5_0/server/WebfluxSingletons.java index 81a9c9925d..da00750c02 100644 --- a/instrumentation/spring/spring-webflux/spring-webflux-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/webflux/v5_0/server/WebfluxSingletons.java +++ b/instrumentation/spring/spring-webflux/spring-webflux-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/webflux/v5_0/server/WebfluxSingletons.java @@ -8,7 +8,7 @@ package io.opentelemetry.javaagent.instrumentation.spring.webflux.v5_0.server; import io.opentelemetry.api.GlobalOpenTelemetry; import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter; import io.opentelemetry.instrumentation.api.instrumenter.InstrumenterBuilder; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteGetter; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRouteGetter; import io.opentelemetry.javaagent.bootstrap.internal.ExperimentalConfig; import io.opentelemetry.javaagent.instrumentation.spring.webflux.v5_0.SpringWebfluxConfig; import org.springframework.web.reactive.HandlerMapping; @@ -39,7 +39,7 @@ public final class WebfluxSingletons { return INSTRUMENTER; } - public static HttpRouteGetter httpRouteGetter() { + public static HttpServerRouteGetter httpRouteGetter() { return (context, exchange) -> { Object bestPatternObj = exchange.getAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE); if (bestPatternObj == null) { diff --git a/instrumentation/spring/spring-webflux/spring-webflux-5.3/library/src/main/java/io/opentelemetry/instrumentation/spring/webflux/v5_3/SpringWebfluxTelemetryBuilder.java b/instrumentation/spring/spring-webflux/spring-webflux-5.3/library/src/main/java/io/opentelemetry/instrumentation/spring/webflux/v5_3/SpringWebfluxTelemetryBuilder.java index 7388a091cb..0eb81a6966 100644 --- a/instrumentation/spring/spring-webflux/spring-webflux-5.3/library/src/main/java/io/opentelemetry/instrumentation/spring/webflux/v5_3/SpringWebfluxTelemetryBuilder.java +++ b/instrumentation/spring/spring-webflux/spring-webflux-5.3/library/src/main/java/io/opentelemetry/instrumentation/spring/webflux/v5_3/SpringWebfluxTelemetryBuilder.java @@ -11,10 +11,10 @@ import io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor; import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter; import io.opentelemetry.instrumentation.api.instrumenter.SpanNameExtractor; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpClientAttributesExtractorBuilder; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteHolder; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerAttributesExtractor; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerAttributesExtractorBuilder; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerMetrics; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRoute; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpSpanNameExtractor; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpSpanStatusExtractor; import io.opentelemetry.instrumentation.spring.webflux.v5_3.internal.ClientInstrumenterFactory; @@ -197,7 +197,7 @@ public final class SpringWebfluxTelemetryBuilder { .setSpanStatusExtractor(HttpSpanStatusExtractor.create(serverAttributesGetter)) .addAttributesExtractor(httpServerAttributesExtractorBuilder.build()) .addAttributesExtractors(serverAdditionalExtractors) - .addContextCustomizer(HttpRouteHolder.create(serverAttributesGetter)) + .addContextCustomizer(HttpServerRoute.create(serverAttributesGetter)) .addOperationMetrics(HttpServerMetrics.get()) .buildServerInstrumenter(WebfluxTextMapGetter.INSTANCE); diff --git a/instrumentation/spring/spring-webflux/spring-webflux-5.3/library/src/main/java/io/opentelemetry/instrumentation/spring/webflux/v5_3/TelemetryProducingWebFilter.java b/instrumentation/spring/spring-webflux/spring-webflux-5.3/library/src/main/java/io/opentelemetry/instrumentation/spring/webflux/v5_3/TelemetryProducingWebFilter.java index f8977bf1a6..549de036a2 100644 --- a/instrumentation/spring/spring-webflux/spring-webflux-5.3/library/src/main/java/io/opentelemetry/instrumentation/spring/webflux/v5_3/TelemetryProducingWebFilter.java +++ b/instrumentation/spring/spring-webflux/spring-webflux-5.3/library/src/main/java/io/opentelemetry/instrumentation/spring/webflux/v5_3/TelemetryProducingWebFilter.java @@ -8,8 +8,8 @@ package io.opentelemetry.instrumentation.spring.webflux.v5_3; import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteHolder; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteSource; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRoute; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRouteSource; import org.reactivestreams.Subscription; import org.springframework.core.Ordered; import org.springframework.http.server.reactive.ServerHttpResponse; @@ -131,10 +131,11 @@ final class TelemetryProducingWebFilter implements WebFilter, Ordered { private void end(Context currentContext, Throwable t) { // Update HTTP route now, because during instrumenter.start() // the HTTP route isn't available from the exchange attributes, but is afterwards - HttpRouteHolder.updateHttpRoute( + HttpServerRoute.update( currentContext, - HttpRouteSource.CONTROLLER, - WebfluxServerHttpAttributesGetter.INSTANCE.getHttpRoute(exchange)); + HttpServerRouteSource.CONTROLLER, + (context, exchange) -> WebfluxServerHttpAttributesGetter.INSTANCE.getHttpRoute(exchange), + exchange); instrumenter.end(currentContext, exchange, exchange, t); } } diff --git a/instrumentation/spring/spring-webmvc/spring-webmvc-3.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/webmvc/v3_1/HandlerAdapterInstrumentation.java b/instrumentation/spring/spring-webmvc/spring-webmvc-3.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/webmvc/v3_1/HandlerAdapterInstrumentation.java index 898f959ed3..d1538a879a 100644 --- a/instrumentation/spring/spring-webmvc/spring-webmvc-3.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/webmvc/v3_1/HandlerAdapterInstrumentation.java +++ b/instrumentation/spring/spring-webmvc/spring-webmvc-3.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/webmvc/v3_1/HandlerAdapterInstrumentation.java @@ -5,7 +5,7 @@ package io.opentelemetry.javaagent.instrumentation.spring.webmvc.v3_1; -import static io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteSource.CONTROLLER; +import static io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRouteSource.CONTROLLER; import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.hasClassesNamed; import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.implementsInterface; import static io.opentelemetry.javaagent.instrumentation.spring.webmvc.v3_1.SpringWebMvcSingletons.handlerInstrumenter; @@ -18,7 +18,7 @@ import static net.bytebuddy.matcher.ElementMatchers.takesArguments; import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteHolder; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRoute; import io.opentelemetry.javaagent.bootstrap.Java8BytecodeBridge; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; @@ -74,7 +74,7 @@ public class HandlerAdapterInstrumentation implements TypeInstrumentation { } // Name the parent span based on the matching pattern - HttpRouteHolder.updateHttpRoute( + HttpServerRoute.update( parentContext, CONTROLLER, SpringWebMvcServerSpanNaming.SERVER_SPAN_NAME, request); if (!handlerInstrumenter().shouldStart(parentContext, handler)) { diff --git a/instrumentation/spring/spring-webmvc/spring-webmvc-3.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/webmvc/v3_1/SpringWebMvcServerSpanNaming.java b/instrumentation/spring/spring-webmvc/spring-webmvc-3.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/webmvc/v3_1/SpringWebMvcServerSpanNaming.java index c78ef70f29..d0e2498ed8 100644 --- a/instrumentation/spring/spring-webmvc/spring-webmvc-3.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/webmvc/v3_1/SpringWebMvcServerSpanNaming.java +++ b/instrumentation/spring/spring-webmvc/spring-webmvc-3.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/webmvc/v3_1/SpringWebMvcServerSpanNaming.java @@ -5,14 +5,14 @@ package io.opentelemetry.javaagent.instrumentation.spring.webmvc.v3_1; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteGetter; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRouteGetter; import io.opentelemetry.javaagent.bootstrap.servlet.ServletContextPath; import javax.servlet.http.HttpServletRequest; import org.springframework.web.servlet.HandlerMapping; public class SpringWebMvcServerSpanNaming { - public static final HttpRouteGetter SERVER_SPAN_NAME = + public static final HttpServerRouteGetter SERVER_SPAN_NAME = (context, request) -> { Object bestMatchingPattern = request.getAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE); diff --git a/instrumentation/spring/spring-webmvc/spring-webmvc-3.1/javaagent/src/main/java/org/springframework/web/servlet/v3_1/OpenTelemetryHandlerMappingFilter.java b/instrumentation/spring/spring-webmvc/spring-webmvc-3.1/javaagent/src/main/java/org/springframework/web/servlet/v3_1/OpenTelemetryHandlerMappingFilter.java index c3f11894d4..24f37c259e 100644 --- a/instrumentation/spring/spring-webmvc/spring-webmvc-3.1/javaagent/src/main/java/org/springframework/web/servlet/v3_1/OpenTelemetryHandlerMappingFilter.java +++ b/instrumentation/spring/spring-webmvc/spring-webmvc-3.1/javaagent/src/main/java/org/springframework/web/servlet/v3_1/OpenTelemetryHandlerMappingFilter.java @@ -5,11 +5,11 @@ package org.springframework.web.servlet.v3_1; -import static io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteSource.CONTROLLER; +import static io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRouteSource.CONTROLLER; import io.opentelemetry.context.Context; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteGetter; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteHolder; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRoute; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRouteGetter; import io.opentelemetry.javaagent.instrumentation.spring.webmvc.v3_1.SpringWebMvcServerSpanNaming; import java.io.IOException; import java.lang.invoke.MethodHandle; @@ -37,7 +37,7 @@ public class OpenTelemetryHandlerMappingFilter implements Filter, Ordered { private static final MethodHandle usesPathPatternsMh = getUsesPathPatternsMh(); private static final MethodHandle parseAndCacheMh = parseAndCacheMh(); - private final HttpRouteGetter serverSpanName = + private final HttpServerRouteGetter serverSpanName = (context, request) -> { Object previousValue = null; if (this.parseRequestPath && PATH_ATTRIBUTE != null) { @@ -84,8 +84,7 @@ public class OpenTelemetryHandlerMappingFilter implements Filter, Ordered { } finally { if (handlerMappings != null) { Context context = Context.current(); - HttpRouteHolder.updateHttpRoute( - context, CONTROLLER, serverSpanName, (HttpServletRequest) request); + HttpServerRoute.update(context, CONTROLLER, serverSpanName, (HttpServletRequest) request); } } } diff --git a/instrumentation/spring/spring-webmvc/spring-webmvc-5.3/library/src/main/java/io/opentelemetry/instrumentation/spring/webmvc/v5_3/SpringWebMvcTelemetryBuilder.java b/instrumentation/spring/spring-webmvc/spring-webmvc-5.3/library/src/main/java/io/opentelemetry/instrumentation/spring/webmvc/v5_3/SpringWebMvcTelemetryBuilder.java index 178b793d72..139cdeb3f5 100644 --- a/instrumentation/spring/spring-webmvc/spring-webmvc-5.3/library/src/main/java/io/opentelemetry/instrumentation/spring/webmvc/v5_3/SpringWebMvcTelemetryBuilder.java +++ b/instrumentation/spring/spring-webmvc/spring-webmvc-5.3/library/src/main/java/io/opentelemetry/instrumentation/spring/webmvc/v5_3/SpringWebMvcTelemetryBuilder.java @@ -10,10 +10,10 @@ import io.opentelemetry.api.OpenTelemetry; import io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor; import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter; import io.opentelemetry.instrumentation.api.instrumenter.SpanNameExtractor; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteHolder; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerAttributesExtractor; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerAttributesExtractorBuilder; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerMetrics; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRoute; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpSpanNameExtractor; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpSpanStatusExtractor; import java.util.ArrayList; @@ -131,7 +131,7 @@ public final class SpringWebMvcTelemetryBuilder { .addAttributesExtractor(httpAttributesExtractorBuilder.build()) .addAttributesExtractors(additionalExtractors) .addOperationMetrics(HttpServerMetrics.get()) - .addContextCustomizer(HttpRouteHolder.create(httpAttributesGetter)) + .addContextCustomizer(HttpServerRoute.create(httpAttributesGetter)) .buildServerInstrumenter(JavaxHttpServletRequestGetter.INSTANCE); return new SpringWebMvcTelemetry(instrumenter); diff --git a/instrumentation/spring/spring-webmvc/spring-webmvc-5.3/library/src/main/java/io/opentelemetry/instrumentation/spring/webmvc/v5_3/WebMvcTelemetryProducingFilter.java b/instrumentation/spring/spring-webmvc/spring-webmvc-5.3/library/src/main/java/io/opentelemetry/instrumentation/spring/webmvc/v5_3/WebMvcTelemetryProducingFilter.java index 8be2112505..d518c6b3fa 100644 --- a/instrumentation/spring/spring-webmvc/spring-webmvc-5.3/library/src/main/java/io/opentelemetry/instrumentation/spring/webmvc/v5_3/WebMvcTelemetryProducingFilter.java +++ b/instrumentation/spring/spring-webmvc/spring-webmvc-5.3/library/src/main/java/io/opentelemetry/instrumentation/spring/webmvc/v5_3/WebMvcTelemetryProducingFilter.java @@ -5,13 +5,13 @@ package io.opentelemetry.instrumentation.spring.webmvc.v5_3; -import static io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteSource.CONTROLLER; +import static io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRouteSource.CONTROLLER; import static java.util.Objects.requireNonNull; import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteHolder; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRoute; import java.io.IOException; import javax.servlet.FilterChain; import javax.servlet.ServletException; @@ -61,8 +61,7 @@ final class WebMvcTelemetryProducingFilter extends OncePerRequestFilter implemen throw t; } finally { if (httpRouteSupport.hasMappings()) { - HttpRouteHolder.updateHttpRoute( - context, CONTROLLER, httpRouteSupport::getHttpRoute, request); + HttpServerRoute.update(context, CONTROLLER, httpRouteSupport::getHttpRoute, request); } instrumenter.end(context, request, response, error); } diff --git a/instrumentation/spring/spring-webmvc/spring-webmvc-6.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/webmvc/v6_0/HandlerAdapterInstrumentation.java b/instrumentation/spring/spring-webmvc/spring-webmvc-6.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/webmvc/v6_0/HandlerAdapterInstrumentation.java index a05e5d1626..385fb050f5 100644 --- a/instrumentation/spring/spring-webmvc/spring-webmvc-6.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/webmvc/v6_0/HandlerAdapterInstrumentation.java +++ b/instrumentation/spring/spring-webmvc/spring-webmvc-6.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/webmvc/v6_0/HandlerAdapterInstrumentation.java @@ -5,7 +5,7 @@ package io.opentelemetry.javaagent.instrumentation.spring.webmvc.v6_0; -import static io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteSource.CONTROLLER; +import static io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRouteSource.CONTROLLER; import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.hasClassesNamed; import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.implementsInterface; import static io.opentelemetry.javaagent.instrumentation.spring.webmvc.v6_0.SpringWebMvcSingletons.handlerInstrumenter; @@ -18,7 +18,7 @@ import static net.bytebuddy.matcher.ElementMatchers.takesArguments; import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteHolder; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRoute; import io.opentelemetry.javaagent.bootstrap.Java8BytecodeBridge; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; @@ -74,7 +74,7 @@ public class HandlerAdapterInstrumentation implements TypeInstrumentation { } // Name the parent span based on the matching pattern - HttpRouteHolder.updateHttpRoute( + HttpServerRoute.update( parentContext, CONTROLLER, SpringWebMvcServerSpanNaming.SERVER_SPAN_NAME, request); if (!handlerInstrumenter().shouldStart(parentContext, handler)) { diff --git a/instrumentation/spring/spring-webmvc/spring-webmvc-6.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/webmvc/v6_0/SpringWebMvcServerSpanNaming.java b/instrumentation/spring/spring-webmvc/spring-webmvc-6.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/webmvc/v6_0/SpringWebMvcServerSpanNaming.java index 9650369f22..4242af9f18 100644 --- a/instrumentation/spring/spring-webmvc/spring-webmvc-6.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/webmvc/v6_0/SpringWebMvcServerSpanNaming.java +++ b/instrumentation/spring/spring-webmvc/spring-webmvc-6.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/webmvc/v6_0/SpringWebMvcServerSpanNaming.java @@ -5,14 +5,14 @@ package io.opentelemetry.javaagent.instrumentation.spring.webmvc.v6_0; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteGetter; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRouteGetter; import io.opentelemetry.javaagent.bootstrap.servlet.ServletContextPath; import jakarta.servlet.http.HttpServletRequest; import org.springframework.web.servlet.HandlerMapping; public class SpringWebMvcServerSpanNaming { - public static final HttpRouteGetter SERVER_SPAN_NAME = + public static final HttpServerRouteGetter SERVER_SPAN_NAME = (context, request) -> { Object bestMatchingPattern = request.getAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE); diff --git a/instrumentation/spring/spring-webmvc/spring-webmvc-6.0/javaagent/src/main/java/org/springframework/web/servlet/v6_0/OpenTelemetryHandlerMappingFilter.java b/instrumentation/spring/spring-webmvc/spring-webmvc-6.0/javaagent/src/main/java/org/springframework/web/servlet/v6_0/OpenTelemetryHandlerMappingFilter.java index c8da7124b4..aca3bf0728 100644 --- a/instrumentation/spring/spring-webmvc/spring-webmvc-6.0/javaagent/src/main/java/org/springframework/web/servlet/v6_0/OpenTelemetryHandlerMappingFilter.java +++ b/instrumentation/spring/spring-webmvc/spring-webmvc-6.0/javaagent/src/main/java/org/springframework/web/servlet/v6_0/OpenTelemetryHandlerMappingFilter.java @@ -5,11 +5,11 @@ package org.springframework.web.servlet.v6_0; -import static io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteSource.CONTROLLER; +import static io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRouteSource.CONTROLLER; import io.opentelemetry.context.Context; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteGetter; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteHolder; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRoute; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRouteGetter; import io.opentelemetry.javaagent.instrumentation.spring.webmvc.v6_0.SpringWebMvcServerSpanNaming; import jakarta.servlet.Filter; import jakarta.servlet.FilterChain; @@ -33,7 +33,7 @@ import org.springframework.web.util.ServletRequestPathUtils; public class OpenTelemetryHandlerMappingFilter implements Filter, Ordered { - private final HttpRouteGetter serverSpanName = + private final HttpServerRouteGetter serverSpanName = (context, request) -> { RequestPath previousValue = null; if (this.parseRequestPath) { @@ -77,8 +77,7 @@ public class OpenTelemetryHandlerMappingFilter implements Filter, Ordered { } finally { if (handlerMappings != null) { Context context = Context.current(); - HttpRouteHolder.updateHttpRoute( - context, CONTROLLER, serverSpanName, (HttpServletRequest) request); + HttpServerRoute.update(context, CONTROLLER, serverSpanName, (HttpServletRequest) request); } } } diff --git a/instrumentation/spring/spring-webmvc/spring-webmvc-6.0/library/src/main/java/io/opentelemetry/instrumentation/spring/webmvc/v6_0/SpringWebMvcTelemetryBuilder.java b/instrumentation/spring/spring-webmvc/spring-webmvc-6.0/library/src/main/java/io/opentelemetry/instrumentation/spring/webmvc/v6_0/SpringWebMvcTelemetryBuilder.java index dfe6794460..72a7ba2379 100644 --- a/instrumentation/spring/spring-webmvc/spring-webmvc-6.0/library/src/main/java/io/opentelemetry/instrumentation/spring/webmvc/v6_0/SpringWebMvcTelemetryBuilder.java +++ b/instrumentation/spring/spring-webmvc/spring-webmvc-6.0/library/src/main/java/io/opentelemetry/instrumentation/spring/webmvc/v6_0/SpringWebMvcTelemetryBuilder.java @@ -10,10 +10,10 @@ import io.opentelemetry.api.OpenTelemetry; import io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor; import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter; import io.opentelemetry.instrumentation.api.instrumenter.SpanNameExtractor; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteHolder; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerAttributesExtractor; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerAttributesExtractorBuilder; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerMetrics; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRoute; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpSpanNameExtractor; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpSpanStatusExtractor; import jakarta.servlet.http.HttpServletRequest; @@ -131,7 +131,7 @@ public final class SpringWebMvcTelemetryBuilder { .addAttributesExtractor(httpAttributesExtractorBuilder.build()) .addAttributesExtractors(additionalExtractors) .addOperationMetrics(HttpServerMetrics.get()) - .addContextCustomizer(HttpRouteHolder.create(httpAttributesGetter)) + .addContextCustomizer(HttpServerRoute.create(httpAttributesGetter)) .buildServerInstrumenter(JakartaHttpServletRequestGetter.INSTANCE); return new SpringWebMvcTelemetry(instrumenter); diff --git a/instrumentation/spring/spring-webmvc/spring-webmvc-6.0/library/src/main/java/io/opentelemetry/instrumentation/spring/webmvc/v6_0/WebMvcTelemetryProducingFilter.java b/instrumentation/spring/spring-webmvc/spring-webmvc-6.0/library/src/main/java/io/opentelemetry/instrumentation/spring/webmvc/v6_0/WebMvcTelemetryProducingFilter.java index 4047ef7549..13f949fb7b 100644 --- a/instrumentation/spring/spring-webmvc/spring-webmvc-6.0/library/src/main/java/io/opentelemetry/instrumentation/spring/webmvc/v6_0/WebMvcTelemetryProducingFilter.java +++ b/instrumentation/spring/spring-webmvc/spring-webmvc-6.0/library/src/main/java/io/opentelemetry/instrumentation/spring/webmvc/v6_0/WebMvcTelemetryProducingFilter.java @@ -5,13 +5,13 @@ package io.opentelemetry.instrumentation.spring.webmvc.v6_0; -import static io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteSource.CONTROLLER; +import static io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRouteSource.CONTROLLER; import static java.util.Objects.requireNonNull; import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteHolder; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRoute; import jakarta.servlet.FilterChain; import jakarta.servlet.ServletException; import jakarta.servlet.http.HttpServletRequest; @@ -61,8 +61,7 @@ final class WebMvcTelemetryProducingFilter extends OncePerRequestFilter implemen throw t; } finally { if (httpRouteSupport.hasMappings()) { - HttpRouteHolder.updateHttpRoute( - context, CONTROLLER, httpRouteSupport::getHttpRoute, request); + HttpServerRoute.update(context, CONTROLLER, httpRouteSupport::getHttpRoute, request); } instrumenter.end(context, request, response, error); } diff --git a/instrumentation/struts-2.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/struts2/ActionInvocationInstrumentation.java b/instrumentation/struts-2.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/struts2/ActionInvocationInstrumentation.java index 3eb0fc49c6..de6ee63542 100644 --- a/instrumentation/struts-2.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/struts2/ActionInvocationInstrumentation.java +++ b/instrumentation/struts-2.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/struts2/ActionInvocationInstrumentation.java @@ -5,7 +5,7 @@ package io.opentelemetry.javaagent.instrumentation.struts2; -import static io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteSource.CONTROLLER; +import static io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRouteSource.CONTROLLER; import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.hasClassesNamed; import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.implementsInterface; import static io.opentelemetry.javaagent.instrumentation.struts2.StrutsSingletons.instrumenter; @@ -16,7 +16,7 @@ import static net.bytebuddy.matcher.ElementMatchers.named; import com.opensymphony.xwork2.ActionInvocation; import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteHolder; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRoute; import io.opentelemetry.javaagent.bootstrap.Java8BytecodeBridge; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; @@ -53,7 +53,7 @@ public class ActionInvocationInstrumentation implements TypeInstrumentation { @Advice.Local("otelScope") Scope scope) { Context parentContext = Java8BytecodeBridge.currentContext(); - HttpRouteHolder.updateHttpRoute( + HttpServerRoute.update( parentContext, CONTROLLER, StrutsServerSpanNaming.SERVER_SPAN_NAME, diff --git a/instrumentation/struts-2.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/struts2/StrutsServerSpanNaming.java b/instrumentation/struts-2.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/struts2/StrutsServerSpanNaming.java index 06766c3143..2480ce6cb1 100644 --- a/instrumentation/struts-2.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/struts2/StrutsServerSpanNaming.java +++ b/instrumentation/struts-2.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/struts2/StrutsServerSpanNaming.java @@ -6,12 +6,12 @@ package io.opentelemetry.javaagent.instrumentation.struts2; import com.opensymphony.xwork2.ActionProxy; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteGetter; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRouteGetter; import io.opentelemetry.javaagent.bootstrap.servlet.ServletContextPath; public class StrutsServerSpanNaming { - public static final HttpRouteGetter SERVER_SPAN_NAME = + public static final HttpServerRouteGetter SERVER_SPAN_NAME = (context, actionProxy) -> { // We take name from the config, because it contains the path pattern from the // configuration. diff --git a/instrumentation/tapestry-5.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/tapestry/InitializeActivePageNameInstrumentation.java b/instrumentation/tapestry-5.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/tapestry/InitializeActivePageNameInstrumentation.java index 925c65da19..20f85ac559 100644 --- a/instrumentation/tapestry-5.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/tapestry/InitializeActivePageNameInstrumentation.java +++ b/instrumentation/tapestry-5.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/tapestry/InitializeActivePageNameInstrumentation.java @@ -5,7 +5,7 @@ package io.opentelemetry.javaagent.instrumentation.tapestry; -import static io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteSource.CONTROLLER; +import static io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRouteSource.CONTROLLER; import static io.opentelemetry.javaagent.bootstrap.Java8BytecodeBridge.currentContext; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.isPublic; @@ -13,7 +13,7 @@ import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.takesArgument; import static net.bytebuddy.matcher.ElementMatchers.takesArguments; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteHolder; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRoute; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer; import net.bytebuddy.asm.Advice; @@ -58,7 +58,7 @@ public class InitializeActivePageNameInstrumentation implements TypeInstrumentat @Advice.OnMethodEnter(suppress = Throwable.class) public static void onEnter(@Advice.Argument(0) ComponentEventRequestParameters parameters) { - HttpRouteHolder.updateHttpRoute( + HttpServerRoute.update( currentContext(), CONTROLLER, TapestryServerSpanNaming.SERVER_SPAN_NAME, @@ -71,7 +71,7 @@ public class InitializeActivePageNameInstrumentation implements TypeInstrumentat @Advice.OnMethodEnter(suppress = Throwable.class) public static void onEnter(@Advice.Argument(0) PageRenderRequestParameters parameters) { - HttpRouteHolder.updateHttpRoute( + HttpServerRoute.update( currentContext(), CONTROLLER, TapestryServerSpanNaming.SERVER_SPAN_NAME, diff --git a/instrumentation/tapestry-5.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/tapestry/TapestryServerSpanNaming.java b/instrumentation/tapestry-5.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/tapestry/TapestryServerSpanNaming.java index c4195cf387..ee02f9ca1c 100644 --- a/instrumentation/tapestry-5.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/tapestry/TapestryServerSpanNaming.java +++ b/instrumentation/tapestry-5.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/tapestry/TapestryServerSpanNaming.java @@ -5,12 +5,12 @@ package io.opentelemetry.javaagent.instrumentation.tapestry; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteGetter; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRouteGetter; import io.opentelemetry.javaagent.bootstrap.servlet.ServletContextPath; public class TapestryServerSpanNaming { - public static final HttpRouteGetter SERVER_SPAN_NAME = + public static final HttpServerRouteGetter SERVER_SPAN_NAME = (context, pageName) -> { if (pageName == null) { return null; diff --git a/instrumentation/tomcat/tomcat-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/tomcat/common/TomcatInstrumenterFactory.java b/instrumentation/tomcat/tomcat-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/tomcat/common/TomcatInstrumenterFactory.java index 9b5baa5ea0..a6e3fd3e8d 100644 --- a/instrumentation/tomcat/tomcat-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/tomcat/common/TomcatInstrumenterFactory.java +++ b/instrumentation/tomcat/tomcat-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/tomcat/common/TomcatInstrumenterFactory.java @@ -7,9 +7,9 @@ package io.opentelemetry.javaagent.instrumentation.tomcat.common; import io.opentelemetry.api.GlobalOpenTelemetry; import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteHolder; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerAttributesExtractor; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerMetrics; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRoute; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpSpanNameExtractor; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpSpanStatusExtractor; import io.opentelemetry.javaagent.bootstrap.internal.CommonConfig; @@ -39,7 +39,7 @@ public final class TomcatInstrumenterFactory { .setCapturedResponseHeaders(CommonConfig.get().getServerResponseHeaders()) .setKnownMethods(CommonConfig.get().getKnownHttpRequestMethods()) .build()) - .addContextCustomizer(HttpRouteHolder.create(httpAttributesGetter)) + .addContextCustomizer(HttpServerRoute.create(httpAttributesGetter)) .addContextCustomizer( (context, request, attributes) -> new AppServerBridge.Builder() diff --git a/instrumentation/undertow-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/undertow/UndertowSingletons.java b/instrumentation/undertow-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/undertow/UndertowSingletons.java index 2e694bcce3..73544a8302 100644 --- a/instrumentation/undertow-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/undertow/UndertowSingletons.java +++ b/instrumentation/undertow-1.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/undertow/UndertowSingletons.java @@ -7,9 +7,9 @@ package io.opentelemetry.javaagent.instrumentation.undertow; import io.opentelemetry.api.GlobalOpenTelemetry; import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteHolder; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerAttributesExtractor; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerMetrics; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRoute; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpSpanNameExtractor; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpSpanStatusExtractor; import io.opentelemetry.javaagent.bootstrap.internal.CommonConfig; @@ -37,7 +37,7 @@ public final class UndertowSingletons { .setCapturedResponseHeaders(CommonConfig.get().getServerResponseHeaders()) .setKnownMethods(CommonConfig.get().getKnownHttpRequestMethods()) .build()) - .addContextCustomizer(HttpRouteHolder.create(httpAttributesGetter)) + .addContextCustomizer(HttpServerRoute.create(httpAttributesGetter)) .addContextCustomizer( (context, request, attributes) -> { // span is ended when counter reaches 0, we start from 2 which accounts for the diff --git a/instrumentation/vaadin-14.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vaadin/VaadinHelper.java b/instrumentation/vaadin-14.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vaadin/VaadinHelper.java index 5dbbcc54f6..77c002499f 100644 --- a/instrumentation/vaadin-14.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vaadin/VaadinHelper.java +++ b/instrumentation/vaadin-14.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vaadin/VaadinHelper.java @@ -12,8 +12,8 @@ import com.vaadin.flow.component.UI; import com.vaadin.flow.router.Location; import io.opentelemetry.context.Context; import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteHolder; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteSource; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRoute; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRouteSource; import io.opentelemetry.javaagent.bootstrap.servlet.ServletContextPath; import javax.annotation.Nullable; @@ -42,10 +42,10 @@ public class VaadinHelper { Context context, VaadinServiceRequest request, Throwable throwable) { serviceInstrumenter.end(context, request, null, throwable); - HttpRouteHolder.updateHttpRoute( + HttpServerRoute.update( context, - HttpRouteSource.CONTROLLER, - (c, req) -> getSpanNameForVaadinServiceContext(c, req), + HttpServerRouteSource.CONTROLLER, + VaadinHelper::getSpanNameForVaadinServiceContext, request); } @@ -107,9 +107,9 @@ public class VaadinHelper { public void updateServerSpanName(Location location) { Context context = Context.current(); - HttpRouteHolder.updateHttpRoute( + HttpServerRoute.update( context, - HttpRouteSource.NESTED_CONTROLLER, + HttpServerRouteSource.NESTED_CONTROLLER, (c, loc) -> ServletContextPath.prepend(c, getSpanNameForLocation(loc)), location); } diff --git a/instrumentation/vertx/vertx-web-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/RoutingContextHandlerWrapper.java b/instrumentation/vertx/vertx-web-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/RoutingContextHandlerWrapper.java index cd41752868..9c9bfe26d3 100644 --- a/instrumentation/vertx/vertx-web-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/RoutingContextHandlerWrapper.java +++ b/instrumentation/vertx/vertx-web-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/RoutingContextHandlerWrapper.java @@ -8,8 +8,8 @@ package io.opentelemetry.javaagent.instrumentation.vertx; import io.opentelemetry.api.trace.Span; import io.opentelemetry.context.Context; import io.opentelemetry.instrumentation.api.instrumenter.LocalRootSpan; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteHolder; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteSource; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRoute; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRouteSource; import io.vertx.core.Handler; import io.vertx.ext.web.RoutingContext; import java.lang.reflect.InvocationTargetException; @@ -29,8 +29,11 @@ public final class RoutingContextHandlerWrapper implements Handler SERVER_SPAN_NAME = + public static final HttpServerRouteGetter SERVER_SPAN_NAME = (context, handler) -> { // using class name as page name String pageName = handler.getPageClass().getName(); diff --git a/testing-common/src/main/java/io/opentelemetry/instrumentation/testing/TestInstrumenters.java b/testing-common/src/main/java/io/opentelemetry/instrumentation/testing/TestInstrumenters.java index 2205f2f2c9..a8d3a9cfc4 100644 --- a/testing-common/src/main/java/io/opentelemetry/instrumentation/testing/TestInstrumenters.java +++ b/testing-common/src/main/java/io/opentelemetry/instrumentation/testing/TestInstrumenters.java @@ -18,9 +18,9 @@ import io.opentelemetry.context.Scope; import io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor; import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter; import io.opentelemetry.instrumentation.api.instrumenter.SpanKindExtractor; -import io.opentelemetry.instrumentation.api.instrumenter.http.HttpRouteHolder; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerAttributesExtractor; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerAttributesGetter; +import io.opentelemetry.instrumentation.api.instrumenter.http.HttpServerRoute; import io.opentelemetry.instrumentation.api.instrumenter.http.HttpSpanNameExtractor; import io.opentelemetry.instrumentation.api.internal.SpanKey; import io.opentelemetry.instrumentation.api.internal.SpanKeyProvider; @@ -51,7 +51,7 @@ final class TestInstrumenters { // cover both semconv and span-kind strategies .addAttributesExtractor(HttpServerAttributesExtractor.create(HttpServerGetter.INSTANCE)) .addAttributesExtractor(new SpanKeyAttributesExtractor(SpanKey.KIND_SERVER)) - .addContextCustomizer(HttpRouteHolder.create(HttpServerGetter.INSTANCE)) + .addContextCustomizer(HttpServerRoute.create(HttpServerGetter.INSTANCE)) .buildInstrumenter(SpanKindExtractor.alwaysServer()); }