From b3d9ae82680850d55e56a4208b2c900e28401105 Mon Sep 17 00:00:00 2001 From: Lauri Tulmin Date: Tue, 2 Nov 2021 16:05:51 +0200 Subject: [PATCH] Fix sun.misc.Unsafe generation on jdk17 (#4558) * Fix sun.misc.Unsafe generation on jdk17 * remove jmxremote argument for now * spotless * remove unneeded annotation --- .../javaagent/tooling/SunMiscUnsafeGenerator.java | 4 +++- .../opentelemetry/smoketest/JettyJpmsSmokeTest.groovy | 10 ++++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/javaagent-tooling/javaagent-tooling-java9/src/main/java/io/opentelemetry/javaagent/tooling/SunMiscUnsafeGenerator.java b/javaagent-tooling/javaagent-tooling-java9/src/main/java/io/opentelemetry/javaagent/tooling/SunMiscUnsafeGenerator.java index 4f7088b500..313e5fb837 100644 --- a/javaagent-tooling/javaagent-tooling-java9/src/main/java/io/opentelemetry/javaagent/tooling/SunMiscUnsafeGenerator.java +++ b/javaagent-tooling/javaagent-tooling-java9/src/main/java/io/opentelemetry/javaagent/tooling/SunMiscUnsafeGenerator.java @@ -195,8 +195,10 @@ class SunMiscUnsafeGenerator { addMethod("arrayIndexScale", int.class, Class.class); addMethod("addressSize", int.class); addMethod("pageSize", int.class); - addMethod("defineAnonymousClass", Class.class, Class.class, byte[].class, Object[].class); addMethod("getLoadAverage", int.class, double[].class, int.class); + // defineAnonymousClass was removed in jdk17 + addOptionalMethod( + "defineAnonymousClass", Class.class, Class.class, byte[].class, Object[].class); // this method is missing from internal unsafe in some jdk11 versions addOptionalMethod("invokeCleaner", void.class, ByteBuffer.class); } diff --git a/smoke-tests/src/test/groovy/io/opentelemetry/smoketest/JettyJpmsSmokeTest.groovy b/smoke-tests/src/test/groovy/io/opentelemetry/smoketest/JettyJpmsSmokeTest.groovy index bc362844cd..ce9024322d 100644 --- a/smoke-tests/src/test/groovy/io/opentelemetry/smoketest/JettyJpmsSmokeTest.groovy +++ b/smoke-tests/src/test/groovy/io/opentelemetry/smoketest/JettyJpmsSmokeTest.groovy @@ -6,8 +6,7 @@ package io.opentelemetry.smoketest // jetty test with java module system -@AppServer(version = "11.0.7", jdk = "11") -class JettyJpmsSmokeTest extends AppServerTest { +abstract class JettyJpmsSmokeTest extends AppServerTest { @Override protected String getTargetImagePrefix() { @@ -20,3 +19,10 @@ class JettyJpmsSmokeTest extends AppServerTest { return ["java", "-jar", "/server/start.jar", "--jpms"] } } + +@AppServer(version = "11.0.7", jdk = "11") +class Jetty11JpmsJdk11 extends JettyJpmsSmokeTest { +} +@AppServer(version = "11.0.7", jdk = "17") +class Jetty11JpmsJdk17 extends JettyJpmsSmokeTest { +} \ No newline at end of file