Skip to content

Commit befadfa

Browse files
committed
virtualfield 1
1 parent 907815a commit befadfa

File tree

3 files changed

+17
-22
lines changed

3 files changed

+17
-22
lines changed

instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-annotations/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/JaxrsAnnotationsInstrumentation.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.hasSuperMethod;
99
import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.hasSuperType;
10+
import static io.opentelemetry.javaagent.instrumentation.jaxrs.v2_0.JaxrsAnnotationsSingletons.ASYNC_RESPONSE_DATA;
1011
import static io.opentelemetry.javaagent.instrumentation.jaxrs.v2_0.JaxrsAnnotationsSingletons.instrumenter;
1112
import static net.bytebuddy.matcher.ElementMatchers.declaresMethod;
1213
import static net.bytebuddy.matcher.ElementMatchers.isAnnotatedWith;
@@ -21,7 +22,6 @@
2122
import io.opentelemetry.context.Scope;
2223
import io.opentelemetry.instrumentation.api.semconv.http.HttpServerRoute;
2324
import io.opentelemetry.instrumentation.api.semconv.http.HttpServerRouteSource;
24-
import io.opentelemetry.instrumentation.api.util.VirtualField;
2525
import io.opentelemetry.javaagent.bootstrap.CallDepth;
2626
import io.opentelemetry.javaagent.bootstrap.Java8BytecodeBridge;
2727
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
@@ -89,12 +89,10 @@ public AdviceScope enter(Object[] args, Object target, Method method) {
8989
return this;
9090
}
9191

92-
VirtualField<AsyncResponse, AsyncResponseData> virtualField = null;
9392
for (Object arg : args) {
9493
if (arg instanceof AsyncResponse) {
9594
asyncResponse = (AsyncResponse) arg;
96-
virtualField = VirtualField.find(AsyncResponse.class, AsyncResponseData.class);
97-
if (virtualField.get(asyncResponse) != null) {
95+
if (ASYNC_RESPONSE_DATA.get(asyncResponse) != null) {
9896
/*
9997
* We are probably in a recursive call and don't want to start a new span because it
10098
* would replace the existing span in the asyncResponse and cause it to never finish. We
@@ -123,8 +121,8 @@ public AdviceScope enter(Object[] args, Object target, Method method) {
123121
context = instrumenter().start(parentContext, handlerData);
124122
scope = context.makeCurrent();
125123

126-
if (virtualField != null && asyncResponse != null) {
127-
virtualField.set(asyncResponse, AsyncResponseData.create(context, handlerData));
124+
if (ASYNC_RESPONSE_DATA != null && asyncResponse != null) {
125+
ASYNC_RESPONSE_DATA.set(asyncResponse, AsyncResponseData.create(context, handlerData));
128126
}
129127
return this;
130128
}

instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-annotations/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/JaxrsAnnotationsSingletons.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,11 @@
66
package io.opentelemetry.javaagent.instrumentation.jaxrs.v2_0;
77

88
import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter;
9+
import io.opentelemetry.instrumentation.api.util.VirtualField;
10+
import io.opentelemetry.javaagent.instrumentation.jaxrs.AsyncResponseData;
911
import io.opentelemetry.javaagent.instrumentation.jaxrs.HandlerData;
1012
import io.opentelemetry.javaagent.instrumentation.jaxrs.JaxrsInstrumenterFactory;
13+
import javax.ws.rs.container.AsyncResponse;
1114

1215
public final class JaxrsAnnotationsSingletons {
1316

@@ -18,5 +21,8 @@ public static Instrumenter<HandlerData, Void> instrumenter() {
1821
return INSTANCE;
1922
}
2023

24+
public static final VirtualField<AsyncResponse, AsyncResponseData> ASYNC_RESPONSE_DATA =
25+
VirtualField.find(AsyncResponse.class, AsyncResponseData.class);
26+
2127
private JaxrsAnnotationsSingletons() {}
2228
}

instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-annotations/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/JaxrsAsyncResponseInstrumentation.java

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,13 @@
77

88
import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.hasClassesNamed;
99
import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.implementsInterface;
10+
import static io.opentelemetry.javaagent.instrumentation.jaxrs.v2_0.JaxrsAnnotationsSingletons.ASYNC_RESPONSE_DATA;
1011
import static io.opentelemetry.javaagent.instrumentation.jaxrs.v2_0.JaxrsAnnotationsSingletons.instrumenter;
1112
import static net.bytebuddy.matcher.ElementMatchers.isPublic;
1213
import static net.bytebuddy.matcher.ElementMatchers.named;
1314
import static net.bytebuddy.matcher.ElementMatchers.takesArgument;
1415

1516
import io.opentelemetry.context.Context;
16-
import io.opentelemetry.instrumentation.api.util.VirtualField;
1717
import io.opentelemetry.javaagent.bootstrap.Java8BytecodeBridge;
1818
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
1919
import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer;
@@ -55,12 +55,9 @@ public static class AsyncResponseAdvice {
5555
@Advice.OnMethodExit(suppress = Throwable.class)
5656
public static void stopSpan(@Advice.This AsyncResponse asyncResponse) {
5757

58-
VirtualField<AsyncResponse, AsyncResponseData> virtualField =
59-
VirtualField.find(AsyncResponse.class, AsyncResponseData.class);
60-
61-
AsyncResponseData data = virtualField.get(asyncResponse);
58+
AsyncResponseData data = ASYNC_RESPONSE_DATA.get(asyncResponse);
6259
if (data != null) {
63-
virtualField.set(asyncResponse, null);
60+
ASYNC_RESPONSE_DATA.set(asyncResponse, null);
6461
instrumenter().end(data.getContext(), data.getHandlerData(), null, null);
6562
}
6663
}
@@ -73,12 +70,9 @@ public static class AsyncResponseThrowableAdvice {
7370
public static void stopSpan(
7471
@Advice.This AsyncResponse asyncResponse, @Advice.Argument(0) Throwable throwable) {
7572

76-
VirtualField<AsyncResponse, AsyncResponseData> virtualField =
77-
VirtualField.find(AsyncResponse.class, AsyncResponseData.class);
78-
79-
AsyncResponseData data = virtualField.get(asyncResponse);
73+
AsyncResponseData data = ASYNC_RESPONSE_DATA.get(asyncResponse);
8074
if (data != null) {
81-
virtualField.set(asyncResponse, null);
75+
ASYNC_RESPONSE_DATA.set(asyncResponse, null);
8276
instrumenter().end(data.getContext(), data.getHandlerData(), null, throwable);
8377
}
8478
}
@@ -90,12 +84,9 @@ public static class AsyncResponseCancelAdvice {
9084
@Advice.OnMethodEnter(suppress = Throwable.class)
9185
public static void stopSpan(@Advice.This AsyncResponse asyncResponse) {
9286

93-
VirtualField<AsyncResponse, AsyncResponseData> virtualField =
94-
VirtualField.find(AsyncResponse.class, AsyncResponseData.class);
95-
96-
AsyncResponseData data = virtualField.get(asyncResponse);
87+
AsyncResponseData data = ASYNC_RESPONSE_DATA.get(asyncResponse);
9788
if (data != null) {
98-
virtualField.set(asyncResponse, null);
89+
ASYNC_RESPONSE_DATA.set(asyncResponse, null);
9990
Context context = data.getContext();
10091
if (JaxrsConfig.CAPTURE_EXPERIMENTAL_SPAN_ATTRIBUTES) {
10192
Java8BytecodeBridge.spanFromContext(context).setAttribute("jaxrs.canceled", true);

0 commit comments

Comments
 (0)