[jboss-cvs] JBossAS SVN: r107267 - projects/cluster/ha-server-cache-ispn/trunk/src/main/java/org/jboss/ha/framework/server.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Mon Aug 2 11:53:15 EDT 2010
Author: pferraro
Date: 2010-08-02 11:53:15 -0400 (Mon, 02 Aug 2010)
New Revision: 107267
Modified:
projects/cluster/ha-server-cache-ispn/trunk/src/main/java/org/jboss/ha/framework/server/DistributedStateImpl.java
Log:
Fix thread safety of unregisterDSListener(...)
Modified: projects/cluster/ha-server-cache-ispn/trunk/src/main/java/org/jboss/ha/framework/server/DistributedStateImpl.java
===================================================================
--- projects/cluster/ha-server-cache-ispn/trunk/src/main/java/org/jboss/ha/framework/server/DistributedStateImpl.java 2010-08-02 15:49:54 UTC (rev 107266)
+++ projects/cluster/ha-server-cache-ispn/trunk/src/main/java/org/jboss/ha/framework/server/DistributedStateImpl.java 2010-08-02 15:53:15 UTC (rev 107267)
@@ -24,6 +24,7 @@
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collection;
+import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
import java.util.Set;
@@ -389,10 +390,10 @@
if (listeners == null)
{
listeners = new CopyOnWriteArrayList<DSListener>();
- List<DSListener> other = this.keyListeners.putIfAbsent(category, listeners);
- if (other != null )
+ List<DSListener> existing = this.keyListeners.putIfAbsent(category, listeners);
+ if (existing != null )
{
- listeners = other; // use the listeners added by other thread
+ listeners = existing; // use the listeners added by other thread
}
}
listeners.add(subscriber);
@@ -405,10 +406,7 @@
if (listeners != null)
{
listeners.remove(subscriber);
- if (listeners.size() == 0)
- {
- this.keyListeners.remove(category);
- }
+ this.keyListeners.remove(category, Collections.emptyList());
}
}
More information about the jboss-cvs-commits
mailing list