Skip to content

Commit de6e0ef

Browse files
authored
Fix ktor3 latest dep test (#12937)
1 parent fa32671 commit de6e0ef

File tree

2 files changed

+16
-2
lines changed

2 files changed

+16
-2
lines changed

instrumentation/ktor/ktor-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/ktor/v3_0/ServerInstrumentation.java

+15-1
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,16 @@
1010

1111
import io.ktor.server.application.Application;
1212
import io.ktor.server.application.ApplicationPluginKt;
13+
import io.ktor.server.engine.EmbeddedServer;
1314
import io.opentelemetry.api.GlobalOpenTelemetry;
1415
import io.opentelemetry.instrumentation.ktor.v2_0.common.AbstractKtorServerTelemetryBuilder;
1516
import io.opentelemetry.instrumentation.ktor.v2_0.common.internal.KtorBuilderUtil;
1617
import io.opentelemetry.instrumentation.ktor.v3_0.KtorServerTelemetryBuilderKt;
1718
import io.opentelemetry.javaagent.bootstrap.internal.AgentCommonConfig;
1819
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
1920
import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer;
21+
import java.lang.invoke.MethodHandle;
22+
import java.lang.invoke.MethodHandles;
2023
import kotlin.Unit;
2124
import kotlin.jvm.functions.Function1;
2225
import net.bytebuddy.asm.Advice;
@@ -39,7 +42,18 @@ public void transform(TypeTransformer transformer) {
3942
public static class ConstructorAdvice {
4043

4144
@Advice.OnMethodExit
42-
public static void onExit(@Advice.FieldValue("_applicationInstance") Application application) {
45+
public static void onExit(
46+
@Advice.This EmbeddedServer<?, ?> server, @Advice.Origin MethodHandles.Lookup lookup)
47+
throws Throwable {
48+
MethodHandle getter;
49+
try {
50+
// since 3.0.3
51+
getter = lookup.findGetter(EmbeddedServer.class, "applicationInstance", Application.class);
52+
} catch (NoSuchFieldException exception) {
53+
// before 3.0.3
54+
getter = lookup.findGetter(EmbeddedServer.class, "_applicationInstance", Application.class);
55+
}
56+
Application application = (Application) getter.invoke(server);
4357
ApplicationPluginKt.install(
4458
application, KtorServerTelemetryBuilderKt.getKtorServerTelemetry(), new SetupFunction());
4559
}

javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/instrumentation/indy/AdviceSignatureEraser.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ private static String eraseTypes(String descriptor) {
8585
String reference = matcher.group();
8686
if (reference.startsWith("Ljava/")) {
8787
// do not erase java.* references
88-
matcher.appendReplacement(result, reference);
88+
matcher.appendReplacement(result, Matcher.quoteReplacement(reference));
8989
} else {
9090
matcher.appendReplacement(result, "Ljava/lang/Object;");
9191
}

0 commit comments

Comments
 (0)