Skip to content

Commit d97ec26

Browse files
authored
Making zio indy ready (#14758)
1 parent 3bfa0ef commit d97ec26

File tree

3 files changed

+16
-8
lines changed

3 files changed

+16
-8
lines changed

instrumentation/zio/zio-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/zio/v2_0/TracingSupervisor.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,10 @@
1818
@SuppressWarnings("unchecked")
1919
public final class TracingSupervisor extends Supervisor<Object> {
2020

21+
@SuppressWarnings("rawtypes")
22+
public static final VirtualField<Fiber.Runtime, FiberContext> RUNTIME_FIBER_CONTEXT =
23+
VirtualField.find(Fiber.Runtime.class, FiberContext.class);
24+
2125
@SuppressWarnings("rawtypes")
2226
private final VirtualField<Fiber.Runtime, FiberContext> virtualField;
2327

instrumentation/zio/zio-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/zio/v2_0/ZioInstrumentationModule.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,12 @@
1010
import com.google.auto.service.AutoService;
1111
import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule;
1212
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
13+
import io.opentelemetry.javaagent.extension.instrumentation.internal.ExperimentalInstrumentationModule;
1314
import java.util.List;
1415

1516
@AutoService(InstrumentationModule.class)
16-
public class ZioInstrumentationModule extends InstrumentationModule {
17+
public class ZioInstrumentationModule extends InstrumentationModule
18+
implements ExperimentalInstrumentationModule {
1719

1820
public ZioInstrumentationModule() {
1921
super("zio", "zio-2.0");
@@ -23,4 +25,9 @@ public ZioInstrumentationModule() {
2325
public List<TypeInstrumentation> typeInstrumentations() {
2426
return singletonList(new ZioRuntimeInstrumentation());
2527
}
28+
29+
@Override
30+
public boolean isIndyReady() {
31+
return true;
32+
}
2633
}

instrumentation/zio/zio-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/zio/v2_0/ZioRuntimeInstrumentation.java

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,15 @@
55

66
package io.opentelemetry.javaagent.instrumentation.zio.v2_0;
77

8+
import static io.opentelemetry.javaagent.instrumentation.zio.v2_0.TracingSupervisor.RUNTIME_FIBER_CONTEXT;
89
import static net.bytebuddy.matcher.ElementMatchers.isMethod;
910
import static net.bytebuddy.matcher.ElementMatchers.named;
1011

11-
import io.opentelemetry.instrumentation.api.util.VirtualField;
1212
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
1313
import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer;
1414
import net.bytebuddy.asm.Advice;
1515
import net.bytebuddy.description.type.TypeDescription;
1616
import net.bytebuddy.matcher.ElementMatcher;
17-
import zio.Fiber;
1817
import zio.Supervisor;
1918

2019
public class ZioRuntimeInstrumentation implements TypeInstrumentation {
@@ -36,11 +35,9 @@ public static final class DefaultSupervisor {
3635
private DefaultSupervisor() {}
3736

3837
@Advice.OnMethodExit(suppress = Throwable.class)
39-
public static void onExit(@Advice.Return(readOnly = false) Supervisor<?> supervisor) {
40-
@SuppressWarnings("rawtypes")
41-
VirtualField<Fiber.Runtime, FiberContext> virtualField =
42-
VirtualField.find(Fiber.Runtime.class, FiberContext.class);
43-
supervisor = supervisor.$plus$plus(new TracingSupervisor(virtualField));
38+
@Advice.AssignReturned.ToReturned
39+
public static Object onExit(@Advice.Return Supervisor<?> supervisor) {
40+
return supervisor.$plus$plus(new TracingSupervisor(RUNTIME_FIBER_CONTEXT));
4441
}
4542
}
4643
}

0 commit comments

Comments
 (0)