Skip to content

Commit 35fc412

Browse files
authored
make kotlinx-coroutines indy-ready (#15010)
1 parent bdf2cb1 commit 35fc412

File tree

4 files changed

+22
-10
lines changed

4 files changed

+22
-10
lines changed

instrumentation/kotlinx-coroutines/kotlinx-coroutines-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/kotlinxcoroutines/KotlinCoroutineDispatcherInstrumentation.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
1414
import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer;
1515
import net.bytebuddy.asm.Advice;
16+
import net.bytebuddy.asm.Advice.AssignReturned;
17+
import net.bytebuddy.asm.Advice.AssignReturned.ToArguments.ToArgument;
1618
import net.bytebuddy.description.type.TypeDescription;
1719
import net.bytebuddy.matcher.ElementMatcher;
1820

@@ -38,11 +40,10 @@ public void transform(TypeTransformer transformer) {
3840
@SuppressWarnings("unused")
3941
public static class StopContextPropagationAdvice {
4042

43+
@AssignReturned.ToArguments(@ToArgument(1))
4144
@Advice.OnMethodEnter
42-
public static void enter(@Advice.Argument(value = 1, readOnly = false) Runnable runnable) {
43-
if (runnable != null) {
44-
runnable = RunnableWrapper.stopPropagation(runnable);
45-
}
45+
public static Runnable enter(@Advice.Argument(1) Runnable runnable) {
46+
return runnable == null ? null : RunnableWrapper.stopPropagation(runnable);
4647
}
4748
}
4849
}

instrumentation/kotlinx-coroutines/kotlinx-coroutines-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/kotlinxcoroutines/KotlinCoroutinesInstrumentation.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer;
1313
import kotlin.coroutines.CoroutineContext;
1414
import net.bytebuddy.asm.Advice;
15+
import net.bytebuddy.asm.Advice.AssignReturned;
16+
import net.bytebuddy.asm.Advice.AssignReturned.ToArguments.ToArgument;
1517
import net.bytebuddy.description.type.TypeDescription;
1618
import net.bytebuddy.matcher.ElementMatcher;
1719

@@ -33,13 +35,12 @@ public void transform(TypeTransformer transformer) {
3335
@SuppressWarnings("unused")
3436
public static class ContextAdvice {
3537

38+
@AssignReturned.ToArguments(@ToArgument(1))
3639
@Advice.OnMethodEnter
37-
public static void enter(
38-
@Advice.Argument(value = 1, readOnly = false) CoroutineContext coroutineContext) {
39-
if (coroutineContext != null) {
40-
coroutineContext =
41-
KotlinCoroutinesInstrumentationHelper.addOpenTelemetryContext(coroutineContext);
42-
}
40+
public static CoroutineContext enter(@Advice.Argument(1) CoroutineContext coroutineContext) {
41+
return coroutineContext == null
42+
? null
43+
: KotlinCoroutinesInstrumentationHelper.addOpenTelemetryContext(coroutineContext);
4344
}
4445
}
4546
}

instrumentation/kotlinx-coroutines/kotlinx-coroutines-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/kotlinxcoroutines/KotlinCoroutinesInstrumentationModule.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,4 +37,9 @@ public List<TypeInstrumentation> typeInstrumentations() {
3737
return asList(
3838
new KotlinCoroutinesInstrumentation(), new KotlinCoroutineDispatcherInstrumentation());
3939
}
40+
41+
@Override
42+
public boolean isIndyReady() {
43+
return true;
44+
}
4045
}

instrumentation/kotlinx-coroutines/kotlinx-coroutines-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/kotlinxcoroutines/instrumentationannotations/AnnotationInstrumentationModule.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,4 +61,9 @@ public void injectClasses(ClassInjector injector) {
6161
"io.opentelemetry.javaagent.instrumentation.kotlinxcoroutines.instrumentationannotations.AnnotationInstrumentationHelper")
6262
.inject(InjectionMode.CLASS_ONLY);
6363
}
64+
65+
@Override
66+
public boolean isIndyReady() {
67+
return true;
68+
}
6469
}

0 commit comments

Comments
 (0)