diff --git a/.github/workflows/build-common.yml b/.github/workflows/build-common.yml index 687e3650b886..8b3f7b9863b2 100644 --- a/.github/workflows/build-common.yml +++ b/.github/workflows/build-common.yml @@ -233,6 +233,7 @@ jobs: - 17 - 21 - 23 + - 24-ea vm: - hotspot - openj9 diff --git a/instrumentation/executors/jdk21-testing/src/test/java/io/opentelemetry/javaagent/instrumentation/executors/VirtualThreadTest.java b/instrumentation/executors/jdk21-testing/src/test/java/io/opentelemetry/javaagent/instrumentation/executors/VirtualThreadTest.java index 924856c6dfca..95a2bafe32d3 100644 --- a/instrumentation/executors/jdk21-testing/src/test/java/io/opentelemetry/javaagent/instrumentation/executors/VirtualThreadTest.java +++ b/instrumentation/executors/jdk21-testing/src/test/java/io/opentelemetry/javaagent/instrumentation/executors/VirtualThreadTest.java @@ -11,12 +11,17 @@ import java.lang.reflect.Method; import java.util.concurrent.Callable; import java.util.concurrent.atomic.AtomicBoolean; +import org.junit.jupiter.api.Assumptions; import org.junit.jupiter.api.Test; class VirtualThreadTest { @Test void testDisableContextPropagation() throws Exception { + // VirtualThread does not have executeOnCarrierThread method in jdk24 + Assumptions.assumeTrue( + Double.parseDouble(System.getProperty("java.specification.version")) < 24); + TestRunnable testRunnable = new TestRunnable(); Thread thread = Thread.ofVirtual().start(testRunnable); thread.join(); diff --git a/instrumentation/internal/internal-lambda/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/internal/lambda/InnerClassLambdaMetafactoryInstrumentation.java b/instrumentation/internal/internal-lambda/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/internal/lambda/InnerClassLambdaMetafactoryInstrumentation.java index 4386101429f1..a3b42f560150 100644 --- a/instrumentation/internal/internal-lambda/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/internal/lambda/InnerClassLambdaMetafactoryInstrumentation.java +++ b/instrumentation/internal/internal-lambda/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/internal/lambda/InnerClassLambdaMetafactoryInstrumentation.java @@ -116,9 +116,13 @@ public void visitMethodInsn( super.visitMethodInsn(opcode, owner, name, descriptor, isInterface); // if current instruction is a call to ASM ClassWriter.toByteArray() insert call to // our lambda transformer - if (opcode == Opcodes.INVOKEVIRTUAL - && "toByteArray".equals(name) - && "()[B".equals(descriptor)) { + if ((opcode == Opcodes.INVOKEVIRTUAL + && "toByteArray".equals(name) + && "()[B".equals(descriptor)) + // jdk 24 + || (opcode == Opcodes.INVOKEINTERFACE + && "build".equals(name) + && descriptor.endsWith(")[B"))) { mv.visitVarInsn(Opcodes.ALOAD, 0); mv.visitFieldInsn( Opcodes.GETFIELD, slashClassName, "lambdaClassName", "Ljava/lang/String;"); diff --git a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-tomee-testing/build.gradle.kts b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-tomee-testing/build.gradle.kts index 3ae8f9175d7b..70039082ee88 100644 --- a/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-tomee-testing/build.gradle.kts +++ b/instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-tomee-testing/build.gradle.kts @@ -14,6 +14,11 @@ dependencies { testInstrumentation(project(":instrumentation:jaxrs:jaxrs-2.0:jaxrs-2.0-cxf-3.2:javaagent")) } +otelJava { + // due to security manager deprecation this test does not work on jdk 24 with default configuration + maxJavaVersionForTests.set(JavaVersion.VERSION_23) +} + tasks.withType().configureEach { // required on jdk17 jvmArgs("--add-opens=java.base/java.lang=ALL-UNNAMED") diff --git a/instrumentation/jaxws/jaxws-2.0-tomee-testing/build.gradle.kts b/instrumentation/jaxws/jaxws-2.0-tomee-testing/build.gradle.kts index 779f42848838..b891d871ac6e 100644 --- a/instrumentation/jaxws/jaxws-2.0-tomee-testing/build.gradle.kts +++ b/instrumentation/jaxws/jaxws-2.0-tomee-testing/build.gradle.kts @@ -15,6 +15,11 @@ dependencies { testInstrumentation(project(":instrumentation:jaxws:jaxws-jws-api-1.1:javaagent")) } +otelJava { + // due to security manager deprecation this test does not work on jdk 24 with default configuration + maxJavaVersionForTests.set(JavaVersion.VERSION_23) +} + tasks.withType().configureEach { // required on jdk17 jvmArgs("--add-opens=java.base/java.lang=ALL-UNNAMED") diff --git a/instrumentation/spring/spring-rmi-4.0/javaagent/build.gradle.kts b/instrumentation/spring/spring-rmi-4.0/javaagent/build.gradle.kts index 0677c5651d68..0ad0491813c5 100644 --- a/instrumentation/spring/spring-rmi-4.0/javaagent/build.gradle.kts +++ b/instrumentation/spring/spring-rmi-4.0/javaagent/build.gradle.kts @@ -28,6 +28,11 @@ dependencies { latestDepTestLibrary("org.springframework.boot:spring-boot:2.+") // documented limitation } +otelJava { + // due to security manager deprecation this test does not work on jdk 24 with default configuration + maxJavaVersionForTests.set(JavaVersion.VERSION_23) +} + tasks.withType().configureEach { jvmArgs("-Djava.rmi.server.hostname=127.0.0.1") }