diff --git a/CHANGES.md b/CHANGES.md index f2534d9be3..57fd985098 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -7,6 +7,7 @@ Release Notes. * Upgrade nats plugin to support 2.16.5 * Add agent self-observability. +* Fix intermittent ClassCircularityError by preloading ThreadLocalRandom since ByteBuddy 1.12.11 All issues and pull requests are [here](https://github.com/apache/skywalking/milestone/222?closed=1) diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/plugin/PluginBootstrap.java b/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/plugin/PluginBootstrap.java index 75c9edc6e0..bea0c3a7fa 100644 --- a/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/plugin/PluginBootstrap.java +++ b/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/plugin/PluginBootstrap.java @@ -33,6 +33,15 @@ public class PluginBootstrap { private static final ILog LOGGER = LogManager.getLogger(PluginBootstrap.class); + // Preload ThreadLocalRandom in case of intermittent ClassCircularityError since ByteBuddy 1.12.11 + static { + try { + Class.forName("java.util.concurrent.ThreadLocalRandom"); + } catch (Exception e) { + LOGGER.warn(e, "Preload ThreadLocalRandom failure."); + } + } + /** * load all plugins. *