You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ru...@apache.org on 2007/09/21 13:10:11 UTC

svn commit: r578061 - in /incubator/qpid/branches/M2: ./ java/broker/src/main/java/org/apache/qpid/server/registry/ApplicationRegistry.java

Author: rupertlssmith
Date: Fri Sep 21 04:10:10 2007
New Revision: 578061

URL: http://svn.apache.org/viewvc?rev=578061&view=rev
Log:
Merged revisions 578058 via svnmerge from 
https://svn.apache.org/repos/asf/incubator/qpid/branches/M2.1

........
  r578058 | rgreig | 2007-09-21 12:06:40 +0100 (Fri, 21 Sep 2007) | 3 lines
  
  QPID-606: synchronize retrieval of application registry to avoid race conditions. This was
  particularly affecting systests which use the in-VM broker.
........

Modified:
    incubator/qpid/branches/M2/   (props changed)
    incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/registry/ApplicationRegistry.java

Propchange: incubator/qpid/branches/M2/
------------------------------------------------------------------------------
--- svnmerge-integrated (original)
+++ svnmerge-integrated Fri Sep 21 04:10:10 2007
@@ -1 +1 @@
-/incubator/qpid/branches/M2.1:400000-567005,568919,568924,573502,573516,574874,574902,575738,575788,575811,577941
+/incubator/qpid/branches/M2.1:400000-567005,568919,568924,573502,573516,574874,574902,575738,575788,575811,577941,578058

Modified: incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/registry/ApplicationRegistry.java
URL: http://svn.apache.org/viewvc/incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/registry/ApplicationRegistry.java?rev=578061&r1=578060&r2=578061&view=diff
==============================================================================
--- incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/registry/ApplicationRegistry.java (original)
+++ incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/registry/ApplicationRegistry.java Fri Sep 21 04:10:10 2007
@@ -137,28 +137,31 @@
 
     public static IApplicationRegistry getInstance(int instanceID)
     {
-        IApplicationRegistry instance = _instanceMap.get(instanceID);
-
-        if (instance == null)
+        synchronized (IApplicationRegistry.class)
         {
-            try
+            IApplicationRegistry instance = _instanceMap.get(instanceID);
+
+            if (instance == null)
             {
-                _logger.info("Creating DEFAULT_APPLICATION_REGISTRY: " + _APPLICATION_REGISTRY + " : Instance:" + instanceID);
-                IApplicationRegistry registry = (IApplicationRegistry) Class.forName(_APPLICATION_REGISTRY).getConstructor((Class[]) null).newInstance((Object[]) null);
-                ApplicationRegistry.initialise(registry, instanceID);
-                _logger.info("Initialised Application Registry:" + instanceID);
-                return registry;
+                try
+                {
+                    _logger.info("Creating DEFAULT_APPLICATION_REGISTRY: " + _APPLICATION_REGISTRY + " : Instance:" + instanceID);
+                    IApplicationRegistry registry = (IApplicationRegistry) Class.forName(_APPLICATION_REGISTRY).getConstructor((Class[]) null).newInstance((Object[]) null);
+                    ApplicationRegistry.initialise(registry, instanceID);
+                    _logger.info("Initialised Application Registry:" + instanceID);
+                    return registry;
+                }
+                catch (Exception e)
+                {
+                    _logger.error("Error configuring application: " + e, e);
+                //throw new AMQBrokerCreationException(instanceID, "Unable to create Application Registry instance " + instanceID);
+                    throw new RuntimeException("Unable to create Application Registry", e);
+                }
             }
-            catch (Exception e)
+            else
             {
-                _logger.error("Error configuring application: " + e, e);
-                //throw new AMQBrokerCreationException(instanceID, "Unable to create Application Registry instance " + instanceID);
-                throw new RuntimeException("Unable to create Application Registry", e);
+                return instance;
             }
-        }
-        else
-        {
-            return instance;
         }
     }