From aa4ecb41e94fb0fccea2bf69b6f69ee360573ccf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BA=8E=E7=8E=89=E6=A1=94?= Date: Tue, 19 Nov 2019 22:44:20 +0800 Subject: [PATCH] fix project deadlock when starting application in issue 3784 (#3894) --- .../agent/core/plugin/loader/InterceptorInstanceLoader.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/plugin/loader/InterceptorInstanceLoader.java b/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/plugin/loader/InterceptorInstanceLoader.java index e1bdb39b07..01bab5149e 100644 --- a/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/plugin/loader/InterceptorInstanceLoader.java +++ b/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/plugin/loader/InterceptorInstanceLoader.java @@ -63,16 +63,17 @@ public class InterceptorInstanceLoader { Object inst = INSTANCE_CACHE.get(instanceKey); if (inst == null) { INSTANCE_LOAD_LOCK.lock(); + ClassLoader pluginLoader; try { - ClassLoader pluginLoader = EXTEND_PLUGIN_CLASSLOADERS.get(targetClassLoader); + pluginLoader = EXTEND_PLUGIN_CLASSLOADERS.get(targetClassLoader); if (pluginLoader == null) { pluginLoader = new AgentClassLoader(targetClassLoader); EXTEND_PLUGIN_CLASSLOADERS.put(targetClassLoader, pluginLoader); } - inst = Class.forName(className, true, pluginLoader).newInstance(); } finally { INSTANCE_LOAD_LOCK.unlock(); } + inst = Class.forName(className, true, pluginLoader).newInstance(); if (inst != null) { INSTANCE_CACHE.put(instanceKey, inst); } -- GitLab