Skip to content

Commit b77dee3

Browse files
authored
make executors indy-ready (#14973)
1 parent 38da208 commit b77dee3

File tree

9 files changed

+320
-205
lines changed

9 files changed

+320
-205
lines changed

instrumentation/executors/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/executors/CallableInstrumentation.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,12 @@
66
package io.opentelemetry.javaagent.instrumentation.executors;
77

88
import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.implementsInterface;
9+
import static io.opentelemetry.javaagent.instrumentation.executors.VirtualFieldHelper.CALLABLE_PROPAGATED_CONTEXT;
910
import static net.bytebuddy.matcher.ElementMatchers.isPublic;
1011
import static net.bytebuddy.matcher.ElementMatchers.named;
1112
import static net.bytebuddy.matcher.ElementMatchers.takesArguments;
1213

1314
import io.opentelemetry.context.Scope;
14-
import io.opentelemetry.instrumentation.api.util.VirtualField;
15-
import io.opentelemetry.javaagent.bootstrap.executors.PropagatedContext;
1615
import io.opentelemetry.javaagent.bootstrap.executors.TaskAdviceHelper;
1716
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
1817
import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer;
@@ -40,9 +39,7 @@ public static class CallableAdvice {
4039

4140
@Advice.OnMethodEnter(suppress = Throwable.class)
4241
public static Scope enter(@Advice.This Callable<?> task) {
43-
VirtualField<Callable<?>, PropagatedContext> virtualField =
44-
VirtualField.find(Callable.class, PropagatedContext.class);
45-
return TaskAdviceHelper.makePropagatedContextCurrent(virtualField, task);
42+
return TaskAdviceHelper.makePropagatedContextCurrent(CALLABLE_PROPAGATED_CONTEXT, task);
4643
}
4744

4845
@Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class)

instrumentation/executors/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/executors/ExecutorsInstrumentationModule.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,12 @@
1111
import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule;
1212
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
1313
import io.opentelemetry.javaagent.extension.instrumentation.internal.EarlyInstrumentationModule;
14+
import io.opentelemetry.javaagent.extension.instrumentation.internal.ExperimentalInstrumentationModule;
1415
import java.util.List;
1516

1617
@AutoService({InstrumentationModule.class, EarlyInstrumentationModule.class})
1718
public class ExecutorsInstrumentationModule extends InstrumentationModule
18-
implements EarlyInstrumentationModule {
19+
implements EarlyInstrumentationModule, ExperimentalInstrumentationModule {
1920

2021
public ExecutorsInstrumentationModule() {
2122
super("executors");
@@ -33,4 +34,9 @@ public List<TypeInstrumentation> typeInstrumentations() {
3334
new VirtualThreadInstrumentation(),
3435
new StructuredTaskScopeInstrumentation());
3536
}
37+
38+
@Override
39+
public boolean isIndyReady() {
40+
return true;
41+
}
3642
}

instrumentation/executors/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/executors/FutureInstrumentation.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,12 @@
66
package io.opentelemetry.javaagent.instrumentation.executors;
77

88
import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.implementsInterface;
9+
import static io.opentelemetry.javaagent.instrumentation.executors.VirtualFieldHelper.FUTURE_PROPAGATED_CONTEXT;
910
import static java.util.logging.Level.FINE;
1011
import static net.bytebuddy.matcher.ElementMatchers.named;
1112
import static net.bytebuddy.matcher.ElementMatchers.returns;
1213

13-
import io.opentelemetry.instrumentation.api.util.VirtualField;
1414
import io.opentelemetry.javaagent.bootstrap.executors.ExecutorAdviceHelper;
15-
import io.opentelemetry.javaagent.bootstrap.executors.PropagatedContext;
1615
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
1716
import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer;
1817
import java.util.Arrays;
@@ -104,9 +103,7 @@ public static void exit(@Advice.This Future<?> future) {
104103
// Try to clear parent span even if future was not cancelled:
105104
// the expectation is that parent span should be cleared after 'cancel'
106105
// is called, one way or another
107-
VirtualField<Future<?>, PropagatedContext> virtualField =
108-
VirtualField.find(Future.class, PropagatedContext.class);
109-
ExecutorAdviceHelper.cleanPropagatedContext(virtualField, future);
106+
ExecutorAdviceHelper.cleanPropagatedContext(FUTURE_PROPAGATED_CONTEXT, future);
110107
}
111108
}
112109
}

0 commit comments

Comments
 (0)