[Jboss-cvs] JBossAS SVN: r56530 - trunk/cluster/src/main/org/jboss/ha/framework/server
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Sun Sep 3 12:09:23 EDT 2006
Author: bstansberry at jboss.com
Date: 2006-09-03 12:09:23 -0400 (Sun, 03 Sep 2006)
New Revision: 56530
Modified:
trunk/cluster/src/main/org/jboss/ha/framework/server/HAPartitionImpl.java
Log:
[JBAS-3619] Don't lock listeners list while notifying listeners
Modified: trunk/cluster/src/main/org/jboss/ha/framework/server/HAPartitionImpl.java
===================================================================
--- trunk/cluster/src/main/org/jboss/ha/framework/server/HAPartitionImpl.java 2006-09-03 15:55:48 UTC (rev 56529)
+++ trunk/cluster/src/main/org/jboss/ha/framework/server/HAPartitionImpl.java 2006-09-03 16:09:23 UTC (rev 56530)
@@ -1352,30 +1352,34 @@
log.debug("Begin notifyListeners, viewID: "+viewID);
synchronized(theListeners)
{
- for (int i = 0; i < theListeners.size(); i++)
+ // JBAS-3619 -- don't hold synch lock while notifying
+ theListeners = (ArrayList) theListeners.clone();
+ }
+
+ for (int i = 0; i < theListeners.size(); i++)
+ {
+ HAMembershipListener aListener = null;
+ try
{
- HAMembershipListener aListener = null;
- try
+ aListener = (HAMembershipListener) theListeners.get(i);
+ if(originatingGroups != null && (aListener instanceof HAMembershipExtendedListener))
{
- aListener = (HAMembershipListener) theListeners.get(i);
- if(originatingGroups != null && (aListener instanceof HAMembershipExtendedListener))
- {
- HAMembershipExtendedListener exListener = (HAMembershipExtendedListener) aListener;
- exListener.membershipChangedDuringMerge (deadMembers, newMembers,
- allMembers, originatingGroups);
- }
- else
- {
- aListener.membershipChanged(deadMembers, newMembers, allMembers);
- }
+ HAMembershipExtendedListener exListener = (HAMembershipExtendedListener) aListener;
+ exListener.membershipChangedDuringMerge (deadMembers, newMembers,
+ allMembers, originatingGroups);
}
- catch (Throwable e)
+ else
{
- // a problem in a listener should not prevent other members to receive the new view
- log.warn("HAMembershipListener callback failure: "+aListener, e);
+ aListener.membershipChanged(deadMembers, newMembers, allMembers);
}
}
+ catch (Throwable e)
+ {
+ // a problem in a listener should not prevent other members to receive the new view
+ log.warn("HAMembershipListener callback failure: "+aListener, e);
+ }
}
+
log.debug("End notifyListeners, viewID: "+viewID);
}
More information about the jboss-cvs-commits
mailing list