You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@skywalking.apache.org by wu...@apache.org on 2019/11/19 14:44:34 UTC

[skywalking] branch master updated: fix project deadlock when starting application in issue 3784 (#3894)

This is an automated email from the ASF dual-hosted git repository.

wusheng pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/skywalking.git


The following commit(s) were added to refs/heads/master by this push:
     new aa4ecb4  fix project deadlock when starting application in issue 3784 (#3894)
aa4ecb4 is described below

commit aa4ecb41e94fb0fccea2bf69b6f69ee360573ccf
Author: 于玉桔 <zh...@apache.org>
AuthorDate: Tue Nov 19 22:44:20 2019 +0800

    fix project deadlock when starting application in issue 3784 (#3894)
---
 .../apm/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 e1bdb39..01bab51 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);
             }