[jboss-cvs] JBossCache/src/org/jboss/cache/buddyreplication ...

Manik Surtani msurtani at jboss.com
Thu Dec 21 13:10:24 EST 2006


  User: msurtani
  Date: 06/12/21 13:10:24

  Modified:    src/org/jboss/cache/buddyreplication  BuddyManager.java
  Log:
  Increased robustness
  
  Revision  Changes    Path
  1.54      +20 -10    JBossCache/src/org/jboss/cache/buddyreplication/BuddyManager.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: BuddyManager.java
  ===================================================================
  RCS file: /cvsroot/jboss/JBossCache/src/org/jboss/cache/buddyreplication/BuddyManager.java,v
  retrieving revision 1.53
  retrieving revision 1.54
  diff -u -b -r1.53 -r1.54
  --- BuddyManager.java	21 Dec 2006 17:59:01 -0000	1.53
  +++ BuddyManager.java	21 Dec 2006 18:10:24 -0000	1.54
  @@ -876,20 +876,14 @@
            log.trace("Waiting for enqueued view change events");
            MembershipChange members = queue.take();
   
  -         log.trace("Broadcasting pool membership details, triggered by view change.");
  -         if (members.oldMembers == null)
  -            broadcastBuddyPoolMembership();
  -         else
  -         {
  -            List<Address> delta = new ArrayList<Address>();
  -            delta.addAll(members.newMembers);
  -            delta.removeAll(members.oldMembers);
  -            broadcastBuddyPoolMembership(delta);
  -         }
  +         broadcastPoolMembership(members);
  +
  +         boolean rebroadcast = false;
   
            // make sure new buddies have broadcast their pool memberships.
            while (!buddyPoolInfoAvailable(members.newMembers))
            {
  +            rebroadcast = true;
               synchronized (poolInfoNotifierLock)
               {
                  log.trace("Not received necessary buddy pool info for all new members yet; waiting on poolInfoNotifierLock.");
  @@ -897,10 +891,26 @@
               }
            }
   
  +         if (rebroadcast) broadcastPoolMembership(members);
  +
            // always refresh buddy list.
            reassignBuddies(members.newMembers);
         }
   
  +      private void broadcastPoolMembership(MembershipChange members)
  +      {
  +         log.trace("Broadcasting pool membership details, triggered by view change.");
  +         if (members.oldMembers == null)
  +            broadcastBuddyPoolMembership();
  +         else
  +         {
  +            List<Address> delta = new ArrayList<Address>();
  +            delta.addAll(members.newMembers);
  +            delta.removeAll(members.oldMembers);
  +            broadcastBuddyPoolMembership(delta);
  +         }
  +      }
  +
         private boolean buddyPoolInfoAvailable(List<Address> newMembers)
         {
            boolean infoReceived = true;
  
  
  



More information about the jboss-cvs-commits mailing list