[jboss-cvs] JBossAS SVN: r69425 - in trunk/cluster/src/main/org/jboss: ha/framework/server and 3 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Mon Jan 28 23:02:31 EST 2008
Author: bstansberry at jboss.com
Date: 2008-01-28 23:02:30 -0500 (Mon, 28 Jan 2008)
New Revision: 69425
Modified:
trunk/cluster/src/main/org/jboss/cache/invalidation/bridges/JGCacheInvalidationBridge.java
trunk/cluster/src/main/org/jboss/ha/framework/server/DistributedReplicantManagerImpl.java
trunk/cluster/src/main/org/jboss/ha/framework/server/HARMIServerImpl.java
trunk/cluster/src/main/org/jboss/ha/jmx/HAServiceMBeanSupport.java
trunk/cluster/src/main/org/jboss/proxy/ejb/ProxyFactoryHA.java
trunk/cluster/src/main/org/jboss/proxy/generic/ProxyFactoryHA.java
Log:
[JBAS-5183] Provide info as to whether topology changes are due to a merge
Modified: trunk/cluster/src/main/org/jboss/cache/invalidation/bridges/JGCacheInvalidationBridge.java
===================================================================
--- trunk/cluster/src/main/org/jboss/cache/invalidation/bridges/JGCacheInvalidationBridge.java 2008-01-29 04:00:01 UTC (rev 69424)
+++ trunk/cluster/src/main/org/jboss/cache/invalidation/bridges/JGCacheInvalidationBridge.java 2008-01-29 04:02:30 UTC (rev 69425)
@@ -131,7 +131,7 @@
* notifications. Need to examine in detail how this method interacts with
* DistributedState to see if we can remove/narrow the synchronization.
*/
- public synchronized void replicantsChanged (String key, java.util.List newReplicants, int newReplicantsViewId)
+ public synchronized void replicantsChanged (String key, java.util.List newReplicants, int newReplicantsViewId, boolean merge)
{
if (key.equals (this.RPC_HANDLER_NAME) && this.drm.isMasterReplica (this.RPC_HANDLER_NAME))
{
Modified: trunk/cluster/src/main/org/jboss/ha/framework/server/DistributedReplicantManagerImpl.java
===================================================================
--- trunk/cluster/src/main/org/jboss/ha/framework/server/DistributedReplicantManagerImpl.java 2008-01-29 04:00:01 UTC (rev 69424)
+++ trunk/cluster/src/main/org/jboss/ha/framework/server/DistributedReplicantManagerImpl.java 2008-01-29 04:02:30 UTC (rev 69425)
@@ -347,7 +347,7 @@
log.info("Merging partitions...");
log.info("Dead members: " + deadMembers.size());
log.info("Originating groups: " + originatingGroups);
- purgeDeadMembers(deadMembers);
+ purgeDeadMembers(deadMembers, true);
if (newMembers.size() > 0)
{
new MergeMembers().start();
@@ -359,11 +359,11 @@
// Here we only care about deadMembers. Purge all replicant lists of deadMembers
// and then notify all listening nodes.
//
- log.info("I am (" + nodeName + ") received membershipChanged event:");
- log.info("Dead members: " + deadMembers.size() + " (" + deadMembers + ")");
- log.info("New Members : " + newMembers.size() + " (" + newMembers + ")");
- log.info("All Members : " + allMembers.size() + " (" + allMembers + ")");
- purgeDeadMembers(deadMembers);
+ log.info("I am (" + nodeName + ") received membershipChanged event:");
+ log.info("Dead members: " + deadMembers.size() + " (" + deadMembers + ")");
+ log.info("New Members : " + newMembers.size() + " (" + newMembers + ")");
+ log.info("All Members : " + allMembers.size() + " (" + allMembers + ")");
+ purgeDeadMembers(deadMembers, false);
// we don't need to merge members anymore
}
@@ -373,13 +373,14 @@
public void processEvent(Object event)
{
KeyChangeEvent kce = (KeyChangeEvent) event;
- notifyKeyListeners(kce.key, kce.replicants);
+ notifyKeyListeners(kce.key, kce.replicants, kce.merge);
}
static class KeyChangeEvent
{
String key;
List replicants;
+ boolean merge;
}
// DistributedReplicantManager implementation ----------------------------------------------
@@ -395,7 +396,7 @@
synchronized(localReplicants)
{
localReplicants.put(key, replicant);
- notifyKeyListeners(key, lookupReplicants(key));
+ notifyKeyListeners(key, lookupReplicants(key), false);
}
}
@@ -421,7 +422,7 @@
List result = lookupReplicants(key);
if (result == null)
result = new ArrayList (); // don't pass null but an empty list
- notifyKeyListeners(key, result);
+ notifyKeyListeners(key, result, false);
}
}
@@ -816,9 +817,10 @@
* Notifies, through a callback, the listeners for a given replicant that the set of replicants has changed
* @param key The replicant key name
* @param newReplicants The new list of replicants
+ * @param merge is the notification the result of a cluster merge?
*
*/
- protected void notifyKeyListeners(String key, List newReplicants)
+ protected void notifyKeyListeners(String key, List newReplicants, boolean merge)
{
if( trace )
log.trace("notifyKeyListeners");
@@ -848,7 +850,7 @@
for (int i = 0; i < toNotify.length; i++)
{
if (toNotify[i] != null)
- toNotify[i].replicantsChanged(key, newReplicants, newId);
+ toNotify[i].replicantsChanged(key, newReplicants, newId, merge);
}
}
@@ -879,7 +881,7 @@
Object[] args = {key, this.nodeName, replicant};
partition.callAsynchMethodOnCluster(SERVICE_NAME, "_add", args, add_types, true);
- notifyKeyListeners(key, lookupReplicants(key));
+ notifyKeyListeners(key, lookupReplicants(key), false);
}
}
if( trace )
@@ -963,7 +965,7 @@
while (notifIter.hasNext ())
{
String key = (String)notifIter.next ();
- notifyKeyListeners(key, lookupReplicants(key));
+ notifyKeyListeners(key, lookupReplicants(key), true);
}
log.debug ("..Finished merging members in DRM service");
@@ -975,10 +977,13 @@
}
/**
- * get rid of dead members from replicant list
- * return true if anything was purged.
+ * Get rid of dead members from replicant list.
+ *
+ * @param deadMembers the members that are no longer in the view
+ * @param merge whether the membership change occurred during
+ * a cluster merge
*/
- protected void purgeDeadMembers(Vector deadMembers)
+ protected void purgeDeadMembers(Vector deadMembers, boolean merge)
{
if (deadMembers.size() <= 0)
return;
@@ -1011,7 +1016,7 @@
}
if (modified)
{
- notifyKeyListeners(key, lookupReplicants(key));
+ notifyKeyListeners(key, lookupReplicants(key), merge);
}
}
}
Modified: trunk/cluster/src/main/org/jboss/ha/framework/server/HARMIServerImpl.java
===================================================================
--- trunk/cluster/src/main/org/jboss/ha/framework/server/HARMIServerImpl.java 2008-01-29 04:00:01 UTC (rev 69424)
+++ trunk/cluster/src/main/org/jboss/ha/framework/server/HARMIServerImpl.java 2008-01-29 04:02:30 UTC (rev 69425)
@@ -259,9 +259,9 @@
generatedProxies.add (ref);
}
- public synchronized void replicantsChanged(String key, List newReplicants, int newReplicantsViewId)
+ public synchronized void replicantsChanged(String key, List newReplicants, int newReplicantsViewId, boolean merge)
{
- super.replicantsChanged (key, newReplicants, newReplicantsViewId);
+ super.replicantsChanged (key, newReplicants, newReplicantsViewId, merge);
// we now update all generated proxies
//
Modified: trunk/cluster/src/main/org/jboss/ha/jmx/HAServiceMBeanSupport.java
===================================================================
--- trunk/cluster/src/main/org/jboss/ha/jmx/HAServiceMBeanSupport.java 2008-01-29 04:00:01 UTC (rev 69424)
+++ trunk/cluster/src/main/org/jboss/ha/jmx/HAServiceMBeanSupport.java 2008-01-29 04:02:30 UTC (rev 69425)
@@ -228,7 +228,8 @@
public void replicantsChanged(
String key,
List newReplicants,
- int newReplicantsViewId)
+ int newReplicantsViewId,
+ boolean merge)
{
if (key.equals(getServiceHAName()))
{
@@ -240,7 +241,7 @@
synchronized(mutex)
{
// change in the topology callback
- HAServiceMBeanSupport.this.partitionTopologyChanged(newReplicants, newReplicantsViewId);
+ HAServiceMBeanSupport.this.partitionTopologyChanged(newReplicants, newReplicantsViewId, merge);
}
}
}
@@ -262,7 +263,7 @@
drm.unregisterListener(getServiceHAName(), drmListener);
}
- public void partitionTopologyChanged(List newReplicants, int newReplicantsViewId)
+ public void partitionTopologyChanged(List newReplicants, int newReplicantsViewId, boolean merge)
{
if (log.isDebugEnabled())
{
Modified: trunk/cluster/src/main/org/jboss/proxy/ejb/ProxyFactoryHA.java
===================================================================
--- trunk/cluster/src/main/org/jboss/proxy/ejb/ProxyFactoryHA.java 2008-01-29 04:00:01 UTC (rev 69424)
+++ trunk/cluster/src/main/org/jboss/proxy/ejb/ProxyFactoryHA.java 2008-01-29 04:02:30 UTC (rev 69425)
@@ -215,7 +215,8 @@
// concurrent replicantsChanged notifications. JBAS-2169.
public synchronized void replicantsChanged (String key,
List newReplicants,
- int newReplicantsViewId)
+ int newReplicantsViewId,
+ boolean merge)
{
try
{
Modified: trunk/cluster/src/main/org/jboss/proxy/generic/ProxyFactoryHA.java
===================================================================
--- trunk/cluster/src/main/org/jboss/proxy/generic/ProxyFactoryHA.java 2008-01-29 04:00:01 UTC (rev 69424)
+++ trunk/cluster/src/main/org/jboss/proxy/generic/ProxyFactoryHA.java 2008-01-29 04:02:30 UTC (rev 69425)
@@ -177,7 +177,8 @@
// concurrent replicantsChanged notifications. JBAS-2169.
public synchronized void replicantsChanged(String key,
List newReplicants,
- int newReplicantsViewId)
+ int newReplicantsViewId,
+ boolean merge)
{
try
{
More information about the jboss-cvs-commits
mailing list