[hornetq-commits] JBoss hornetq SVN: r10219 - in branches/Branch_2_2_EAP/src/main/org/hornetq/core: server/cluster/impl and 1 other directory.
do-not-reply at jboss.org
do-not-reply at jboss.org
Wed Feb 16 12:56:47 EST 2011
Author: ataylor
Date: 2011-02-16 12:56:44 -0500 (Wed, 16 Feb 2011)
New Revision: 10219
Modified:
branches/Branch_2_2_EAP/src/main/org/hornetq/core/client/impl/Topology.java
branches/Branch_2_2_EAP/src/main/org/hornetq/core/server/cluster/impl/ClusterManagerImpl.java
Log:
relaxed synching to avoid contention
Modified: branches/Branch_2_2_EAP/src/main/org/hornetq/core/client/impl/Topology.java
===================================================================
--- branches/Branch_2_2_EAP/src/main/org/hornetq/core/client/impl/Topology.java 2011-02-16 13:41:38 UTC (rev 10218)
+++ branches/Branch_2_2_EAP/src/main/org/hornetq/core/client/impl/Topology.java 2011-02-16 17:56:44 UTC (rev 10219)
@@ -88,12 +88,13 @@
return (member != null);
}
- public synchronized void fireListeners(ClusterTopologyListener listener)
+ public void sendTopology(ClusterTopologyListener listener)
{
int count = 0;
- for (Map.Entry<String, TopologyMember> entry : topology.entrySet())
+ Map<String, TopologyMember> copy = new HashMap<String, TopologyMember>(topology);
+ for (Map.Entry<String, TopologyMember> entry : copy.entrySet())
{
- listener.nodeUP(entry.getKey(), entry.getValue().getConnector(), ++count == topology.size());
+ listener.nodeUP(entry.getKey(), entry.getValue().getConnector(), ++count == copy.size());
}
}
Modified: branches/Branch_2_2_EAP/src/main/org/hornetq/core/server/cluster/impl/ClusterManagerImpl.java
===================================================================
--- branches/Branch_2_2_EAP/src/main/org/hornetq/core/server/cluster/impl/ClusterManagerImpl.java 2011-02-16 13:41:38 UTC (rev 10218)
+++ branches/Branch_2_2_EAP/src/main/org/hornetq/core/server/cluster/impl/ClusterManagerImpl.java 2011-02-16 17:56:44 UTC (rev 10219)
@@ -29,8 +29,6 @@
import org.hornetq.api.core.client.ClientSessionFactory;
import org.hornetq.api.core.client.ClusterTopologyListener;
import org.hornetq.api.core.client.HornetQClient;
-import org.hornetq.api.core.client.ServerLocator;
-import org.hornetq.core.client.impl.ServerLocatorImpl;
import org.hornetq.core.client.impl.ServerLocatorInternal;
import org.hornetq.core.client.impl.Topology;
import org.hornetq.core.client.impl.TopologyMember;
@@ -300,20 +298,23 @@
return clusterConnections.get(name.toString());
}
- public synchronized void addClusterTopologyListener(final ClusterTopologyListener listener,
+ public void addClusterTopologyListener(final ClusterTopologyListener listener,
final boolean clusterConnection)
{
- if (clusterConnection)
+ synchronized (this)
{
- this.clusterConnectionListeners.add(listener);
+ if (clusterConnection)
+ {
+ this.clusterConnectionListeners.add(listener);
+ }
+ else
+ {
+ this.clientListeners.add(listener);
+ }
}
- else
- {
- this.clientListeners.add(listener);
- }
// We now need to send the current topology to the client
- topology.fireListeners(listener);
+ topology.sendTopology(listener);
}
public synchronized void removeClusterTopologyListener(final ClusterTopologyListener listener,
More information about the hornetq-commits
mailing list