Author: slebresne Date: Tue Nov 22 09:51:28 2011 New Revision: 1204884 URL: http://svn.apache.org/viewvc?rev=1204884&view=rev Log: Fix ConcurrentModificationException in FailureDetector patch by amorton; reviewed by slebresne for CASSANDRA-3519
Modified: cassandra/branches/cassandra-0.8/CHANGES.txt cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/gms/FailureDetector.java Modified: cassandra/branches/cassandra-0.8/CHANGES.txt URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/CHANGES.txt?rev=1204884&r1=1204883&r2=1204884&view=diff ============================================================================== --- cassandra/branches/cassandra-0.8/CHANGES.txt (original) +++ cassandra/branches/cassandra-0.8/CHANGES.txt Tue Nov 22 09:51:28 2011 @@ -39,6 +39,7 @@ * Make counter shard merging thread safe (CASSANDRA-3178) * Fix bug preventing the use of efficient cross-DC writes (CASSANDRA-3472) * (Hadoop) skip empty rows when entire row is requested, redux (CASSANDRA-2855) + * fix concurrence issue in the FailureDetector (CASSANDRA-3519) 0.8.7 Modified: cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/gms/FailureDetector.java URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/gms/FailureDetector.java?rev=1204884&r1=1204883&r2=1204884&view=diff ============================================================================== --- cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/gms/FailureDetector.java (original) +++ cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/gms/FailureDetector.java Tue Nov 22 09:51:28 2011 @@ -22,6 +22,7 @@ import java.io.*; import java.lang.management.ManagementFactory; import java.net.InetAddress; import java.util.*; +import java.util.concurrent.CopyOnWriteArrayList; import javax.management.MBeanServer; import javax.management.ObjectName; @@ -47,7 +48,7 @@ public class FailureDetector implements private static int phiConvictThreshold_; private Map<InetAddress, ArrivalWindow> arrivalSamples_ = new Hashtable<InetAddress, ArrivalWindow>(); - private List<IFailureDetectionEventListener> fdEvntListeners_ = new ArrayList<IFailureDetectionEventListener>(); + private List<IFailureDetectionEventListener> fdEvntListeners_ = new CopyOnWriteArrayList<IFailureDetectionEventListener>(); public FailureDetector() {