Author: orudyy
Date: Sun Jan 27 14:59:06 2013
New Revision: 1439094

URL: http://svn.apache.org/viewvc?rev=1439094&view=rev
Log:
QPID-4390: Fix a dead lock occuring on starting the broker when bdb store is 
activated in one thread and JMX plugin is started in another. The dead lock 
occurs when bdb thread tries to add an exchange from store and the main thread 
tries to create the exchangeMBean at the same time

Modified:
    
qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/AbstractAdapter.java

Modified: 
qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/AbstractAdapter.java
URL: 
http://svn.apache.org/viewvc/qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/AbstractAdapter.java?rev=1439094&r1=1439093&r2=1439094&view=diff
==============================================================================
--- 
qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/AbstractAdapter.java
 (original)
+++ 
qpid/branches/java-broker-config-qpid-4390/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/AbstractAdapter.java
 Sun Jan 27 14:59:06 2013
@@ -101,7 +101,7 @@ abstract class AbstractAdapter implement
 
     protected void notifyStateChanged(final State currentState, final State 
desiredState)
     {
-        synchronized (this)
+        synchronized (_changeListeners)
         {
             for(ConfigurationChangeListener listener : _changeListeners)
             {
@@ -116,7 +116,7 @@ abstract class AbstractAdapter implement
         {
             throw new NullPointerException("Cannot add a null listener");
         }
-        synchronized (this)
+        synchronized (_changeListeners)
         {
             if(!_changeListeners.contains(listener))
             {
@@ -131,7 +131,7 @@ abstract class AbstractAdapter implement
         {
             throw new NullPointerException("Cannot remove a null listener");
         }
-        synchronized (this)
+        synchronized (_changeListeners)
         {
             return _changeListeners.remove(listener);
         }
@@ -140,7 +140,7 @@ abstract class AbstractAdapter implement
 
     protected void childAdded(ConfiguredObject child)
     {
-        synchronized (this)
+        synchronized (_changeListeners)
         {
             for(ConfigurationChangeListener listener : _changeListeners)
             {
@@ -152,7 +152,7 @@ abstract class AbstractAdapter implement
 
     protected void childRemoved(ConfiguredObject child)
     {
-        synchronized (this)
+        synchronized (_changeListeners)
         {
             for(ConfigurationChangeListener listener : _changeListeners)
             {
@@ -181,7 +181,7 @@ abstract class AbstractAdapter implement
     @Override
     public final Map<String, Object> getActualAttributes()
     {
-        synchronized (this)
+        synchronized (_attributes)
         {
             return new HashMap<String, Object>(_attributes);
         }
@@ -189,7 +189,7 @@ abstract class AbstractAdapter implement
 
     private Object getActualAttribute(final String name)
     {
-        synchronized (this)
+        synchronized (_attributes)
         {
             return _attributes.get(name);
         }
@@ -198,7 +198,7 @@ abstract class AbstractAdapter implement
     public Object setAttribute(final String name, final Object expected, final 
Object desired)
             throws IllegalStateException, AccessControlException, 
IllegalArgumentException
     {
-        synchronized (this)
+        synchronized (_attributes)
         {
             Object currentValue = getAttribute(name);
             if((currentValue == null && expected == null)
@@ -216,7 +216,7 @@ abstract class AbstractAdapter implement
 
     public <T extends ConfiguredObject> T getParent(final Class<T> clazz)
     {
-        synchronized (this)
+        synchronized (_parents)
         {
             return (T) _parents.get(clazz);
         }
@@ -224,7 +224,7 @@ abstract class AbstractAdapter implement
 
     protected <T extends ConfiguredObject> void addParent(Class<T> clazz, T 
parent)
     {
-        synchronized (this)
+        synchronized (_parents)
         {
             _parents.put(clazz, parent);
         }



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org
For additional commands, e-mail: commits-h...@qpid.apache.org

Reply via email to