[jboss-cvs] JBossCache/src/org/jboss/cache/buddyreplication ...
Manik Surtani
msurtani at jboss.com
Thu Dec 21 13:16:17 EST 2006
User: msurtani
Date: 06/12/21 13:16:17
Modified: src/org/jboss/cache/buddyreplication Tag:
Branch_JBossCache_1_4_0 BuddyManager.java
Log:
improved robustness
Revision Changes Path
No revision
No revision
1.33.2.10 +13 -3 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.33.2.9
retrieving revision 1.33.2.10
diff -u -b -r1.33.2.9 -r1.33.2.10
--- BuddyManager.java 21 Dec 2006 15:42:17 -0000 1.33.2.9
+++ BuddyManager.java 21 Dec 2006 18:16:17 -0000 1.33.2.10
@@ -908,9 +908,14 @@
log.trace("Waiting for enqueued view change events");
List[] members = (List[]) queue.take(); // 2 element array - 0 - oldMembers, 1 - newMembers
+ broadcastPoolMembership(members);
+
+ boolean rebroadcast = false;
+
// make sure new buddies have broadcast their pool memberships.
while (!buddyPoolInfoAvailable(members[1]))
{
+ rebroadcast = true;
synchronized (poolInfoNotifierLock)
{
log.trace("Not received necessary buddy pool info for all new members yet; waiting on poolInfoNotifierLock.");
@@ -918,6 +923,14 @@
}
}
+ if (rebroadcast) broadcastPoolMembership(members);
+
+ // always refresh buddy list.
+ reassignBuddies(members[1]);
+ }
+
+ private void broadcastPoolMembership(List[] members)
+ {
log.trace("Broadcasting pool membership details, triggered by view change.");
if (members[0] == null)
broadcastBuddyPoolMembership();
@@ -928,9 +941,6 @@
delta.removeAll(members[0]);
broadcastBuddyPoolMembership(delta);
}
-
- // always refresh buddy list.
- reassignBuddies(members[1]);
}
private boolean buddyPoolInfoAvailable(List newMembers)
More information about the jboss-cvs-commits
mailing list