Author: toad
Date: 2009-04-11 17:45:33 +0000 (Sat, 11 Apr 2009)
New Revision: 26738

Modified:
   trunk/freenet/src/freenet/pluginmanager/PluginManager.java
Log:
Separate lock for final stage of plugin loading


Modified: trunk/freenet/src/freenet/pluginmanager/PluginManager.java
===================================================================
--- trunk/freenet/src/freenet/pluginmanager/PluginManager.java  2009-04-11 
17:42:57 UTC (rev 26737)
+++ trunk/freenet/src/freenet/pluginmanager/PluginManager.java  2009-04-11 
17:45:33 UTC (rev 26738)
@@ -733,6 +733,11 @@
                return false;
        }
 
+       /** Separate lock for plugin loading. Don't use (this) as we also use 
that for
+        * writing the config file, and because we do a lot inside the lock 
below; it
+        * must not be taken in any other circumstance. */
+       private final Object pluginLoadSyncObject = new Object();
+       
        /**
         * Tries to load a plugin from the given name. If the name only 
contains the
         * name of a plugin it is loaded from the plugin directory, if found,
@@ -822,8 +827,8 @@
                                }
                }
                
-               // synchronized(this), not (pluginwrappers)
-               synchronized (this) {
+               // we do quite a lot inside the lock, use a dedicated one
+               synchronized (pluginLoadSyncObject) {
                        if(this.isPluginLoaded(filename)) {
                                Logger.error(this, "Plugin already loaded: 
"+filename);
                                return null;

_______________________________________________
cvs mailing list
[email protected]
http://emu.freenetproject.org/cgi-bin/mailman/listinfo/cvs

Reply via email to