[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