You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by br...@apache.org on 2013/08/01 16:35:33 UTC

[2/3] git commit: Fix rare IOOBE in sendGossip Patch by Chris Lohfink, reviewed by brandonwilliams for CASSANDRA-4774

Fix rare IOOBE in sendGossip
Patch by Chris Lohfink, reviewed by brandonwilliams for CASSANDRA-4774


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/29939653
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/29939653
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/29939653

Branch: refs/heads/trunk
Commit: 299396537102b4ac5bf6d40952a1b6ef83ce3662
Parents: 579ed75
Author: Brandon Williams <br...@apache.org>
Authored: Thu Aug 1 09:30:16 2013 -0500
Committer: Brandon Williams <br...@apache.org>
Committed: Thu Aug 1 09:30:16 2013 -0500

----------------------------------------------------------------------
 src/java/org/apache/cassandra/gms/Gossiper.java | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/29939653/src/java/org/apache/cassandra/gms/Gossiper.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/gms/Gossiper.java b/src/java/org/apache/cassandra/gms/Gossiper.java
index b0284c1..0dcfb90 100644
--- a/src/java/org/apache/cassandra/gms/Gossiper.java
+++ b/src/java/org/apache/cassandra/gms/Gossiper.java
@@ -38,6 +38,9 @@ import org.apache.cassandra.net.MessagingService;
 import org.apache.cassandra.service.StorageService;
 import org.apache.cassandra.utils.FBUtilities;
 
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.Lists;
+
 /**
  * This module is responsible for Gossiping information for the local endpoint. This abstraction
  * maintains the list of live and dead endpoints. Periodically i.e. every 1 second this module
@@ -508,11 +511,12 @@ public class Gossiper implements IFailureDetectionEventListener, GossiperMBean
      */
     private boolean sendGossip(MessageOut<GossipDigestSyn> message, Set<InetAddress> epSet)
     {
-        int size = epSet.size();
+        List<InetAddress> liveEndpoints = ImmutableList.copyOf(epSet);
+        
+        int size = liveEndpoints.size();
         if (size < 1)
             return false;
         /* Generate a random number from 0 -> size */
-        List<InetAddress> liveEndpoints = new ArrayList<InetAddress>(epSet);
         int index = (size == 1) ? 0 : random.nextInt(size);
         InetAddress to = liveEndpoints.get(index);
         if (logger.isTraceEnabled())