From f9f0438e85f6a047e98209b0b9ad52b71759fa1f Mon Sep 17 00:00:00 2001 From: Tyler Benson Date: Tue, 18 Sep 2018 16:59:38 +1000 Subject: [PATCH] Initialize WeakMapProvider even earlier It is used by classes delcared as static fields in AgentInstaller, so there were some cases where the fallback is being used. --- .../java/datadog/trace/agent/tooling/AgentInstaller.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/AgentInstaller.java b/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/AgentInstaller.java index ebe202a33e..76f1342d24 100644 --- a/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/AgentInstaller.java +++ b/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/AgentInstaller.java @@ -20,6 +20,11 @@ import net.bytebuddy.utility.JavaModule; @Slf4j public class AgentInstaller { + static { + // WeakMap is used by other classes below, so we need to register the provider first. + registerWeakMapProvider(); + } + public static final DDLocationStrategy LOCATION_STRATEGY = new DDLocationStrategy(); public static final AgentBuilder.PoolStrategy POOL_STRATEGY = new DDCachingPoolStrategy(); private static volatile Instrumentation INSTRUMENTATION; @@ -41,7 +46,6 @@ public class AgentInstaller { public static ResettableClassFileTransformer installBytebuddyAgent( final Instrumentation inst, final AgentBuilder.Listener... listeners) { INSTRUMENTATION = inst; - registerWeakMapProvider(); AgentBuilder agentBuilder = new AgentBuilder.Default()