diff --git a/instrumentation/rocketmq/rocketmq-client/rocketmq-client-4.8/javaagent/build.gradle.kts b/instrumentation/rocketmq/rocketmq-client/rocketmq-client-4.8/javaagent/build.gradle.kts index 929b2de66edb..7a7d1cc160bf 100644 --- a/instrumentation/rocketmq/rocketmq-client/rocketmq-client-4.8/javaagent/build.gradle.kts +++ b/instrumentation/rocketmq/rocketmq-client/rocketmq-client-4.8/javaagent/build.gradle.kts @@ -25,4 +25,8 @@ tasks.withType().configureEach { jvmArgs("-Dotel.instrumentation.rocketmq-client.experimental-span-attributes=true") systemProperty("testLatestDeps", findProperty("testLatestDeps") as Boolean) + + // required on jdk17 + jvmArgs("--add-opens=java.base/sun.nio.ch=ALL-UNNAMED") + jvmArgs("-XX:+IgnoreUnrecognizedVMOptions") } diff --git a/instrumentation/rocketmq/rocketmq-client/rocketmq-client-4.8/library/build.gradle.kts b/instrumentation/rocketmq/rocketmq-client/rocketmq-client-4.8/library/build.gradle.kts index 4098d5afdcdf..892247fdf2b8 100644 --- a/instrumentation/rocketmq/rocketmq-client/rocketmq-client-4.8/library/build.gradle.kts +++ b/instrumentation/rocketmq/rocketmq-client/rocketmq-client-4.8/library/build.gradle.kts @@ -15,4 +15,7 @@ dependencies { tasks.withType().configureEach { systemProperty("testLatestDeps", findProperty("testLatestDeps") as Boolean) + // required on jdk17 + jvmArgs("--add-opens=java.base/sun.nio.ch=ALL-UNNAMED") + jvmArgs("-XX:+IgnoreUnrecognizedVMOptions") } diff --git a/instrumentation/rocketmq/rocketmq-client/rocketmq-client-4.8/testing/src/main/java/io/opentelemetry/instrumentation/rocketmqclient/v4_8/base/IntegrationTestBase.java b/instrumentation/rocketmq/rocketmq-client/rocketmq-client-4.8/testing/src/main/java/io/opentelemetry/instrumentation/rocketmqclient/v4_8/base/IntegrationTestBase.java index 70f28ff1dccb..4dde16c6270c 100644 --- a/instrumentation/rocketmq/rocketmq-client/rocketmq-client-4.8/testing/src/main/java/io/opentelemetry/instrumentation/rocketmqclient/v4_8/base/IntegrationTestBase.java +++ b/instrumentation/rocketmq/rocketmq-client/rocketmq-client-4.8/testing/src/main/java/io/opentelemetry/instrumentation/rocketmqclient/v4_8/base/IntegrationTestBase.java @@ -6,6 +6,7 @@ package io.opentelemetry.instrumentation.rocketmqclient.v4_8.base; import static java.util.Collections.emptyMap; +import static org.awaitility.Awaitility.await; import io.opentelemetry.instrumentation.test.utils.PortUtils; import java.io.File; @@ -15,6 +16,7 @@ import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; +import java.time.Duration; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -147,13 +149,23 @@ public static void initTopic(String topic, String nsAddr, String clusterName) { Class mqAdmin = Class.forName("org.apache.rocketmq.test.util.MQAdminTestUtils"); Method createTopic = mqAdmin.getMethod( - "createTopic", String.class, String.class, String.class, int.class, Map.class); - createTopic.invoke(null, nsAddr, clusterName, topic, 20, emptyMap()); - } catch (ClassNotFoundException - | InvocationTargetException - | NoSuchMethodException - | IllegalAccessException ex) { - throw new LinkageError("Could not initialize topic", ex); + "createTopic", + String.class, + String.class, + String.class, + int.class, + Map.class, + int.class); + await() + .atMost(Duration.ofSeconds(30)) + .ignoreException(InvocationTargetException.class) + .until( + () -> { + createTopic.invoke(null, nsAddr, clusterName, topic, 20, emptyMap(), 3); + return true; + }); + } catch (ClassNotFoundException | NoSuchMethodException ex) { + throw new IllegalStateException("Could not initialize topic", ex); } } }