[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