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