From 32e2f706c4dd5657cd23cceb816dd33a450528be Mon Sep 17 00:00:00 2001 From: Lauri Tulmin Date: Fri, 13 Jun 2025 13:42:53 +0300 Subject: [PATCH] Preload ThreadLocalRandom to avoid java.lang.ClassCircularityError: java/util/concurrent/ThreadLocalRandom --- .../io/opentelemetry/javaagent/tooling/AgentInstaller.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/AgentInstaller.java b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/AgentInstaller.java index 5a08597845f1..927111b6023e 100644 --- a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/AgentInstaller.java +++ b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/AgentInstaller.java @@ -57,6 +57,7 @@ import java.util.List; import java.util.Map; import java.util.Objects; +import java.util.concurrent.ThreadLocalRandom; import java.util.logging.LogManager; import java.util.logging.Logger; import java.util.stream.Stream; @@ -123,6 +124,11 @@ private static void installBytebuddyAgent( EmbeddedInstrumentationProperties.setPropertiesLoader(extensionClassLoader); setDefineClassHandler(); FieldBackedImplementationConfiguration.configure(earlyConfig); + // preload ThreadLocalRandom to avoid occasional + // java.lang.ClassCircularityError: java/util/concurrent/ThreadLocalRandom + // see https://github.com/raphw/byte-buddy/issues/1666 and + // https://bugs.openjdk.org/browse/JDK-8164165 + ThreadLocalRandom.current(); AgentBuilder agentBuilder = new AgentBuilder.Default(