You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by jb...@apache.org on 2009/10/20 19:48:50 UTC

svn commit: r827743 - /incubator/cassandra/trunk/src/java/org/apache/cassandra/locator/AbstractReplicationStrategy.java

Author: jbellis
Date: Tue Oct 20 17:48:49 2009
New Revision: 827743

URL: http://svn.apache.org/viewvc?rev=827743&view=rev
Log:
inline getNextAvailable
patch by jbellis; reviewed by eevans for CASSANDRA-496

Modified:
    incubator/cassandra/trunk/src/java/org/apache/cassandra/locator/AbstractReplicationStrategy.java

Modified: incubator/cassandra/trunk/src/java/org/apache/cassandra/locator/AbstractReplicationStrategy.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/locator/AbstractReplicationStrategy.java?rev=827743&r1=827742&r2=827743&view=diff
==============================================================================
--- incubator/cassandra/trunk/src/java/org/apache/cassandra/locator/AbstractReplicationStrategy.java (original)
+++ incubator/cassandra/trunk/src/java/org/apache/cassandra/locator/AbstractReplicationStrategy.java Tue Oct 20 17:48:49 2009
@@ -81,34 +81,6 @@
         }
     }
 
-    protected EndPoint getNextAvailableEndPoint(EndPoint startPoint, List<EndPoint> topN, List<EndPoint> liveNodes)
-    {
-        EndPoint endPoint = null;
-        Map<Token, EndPoint> tokenToEndPointMap = tokenMetadata_.cloneTokenEndPointMap();
-        List tokens = new ArrayList(tokenToEndPointMap.keySet());
-        Collections.sort(tokens);
-        Token token = tokenMetadata_.getToken(startPoint);
-        int index = Collections.binarySearch(tokens, token);
-        if(index < 0)
-        {
-            index = (index + 1) * (-1);
-            if (index >= tokens.size())
-                index = 0;
-        }
-        int totalNodes = tokens.size();
-        int startIndex = (index+1)%totalNodes;
-        for (int i = startIndex, count = 1; count < totalNodes ; ++count, i = (i+1)%totalNodes)
-        {
-            EndPoint tmpEndPoint = tokenToEndPointMap.get(tokens.get(i));
-            if(FailureDetector.instance().isAlive(tmpEndPoint) && !topN.contains(tmpEndPoint) && !liveNodes.contains(tmpEndPoint))
-            {
-                endPoint = tmpEndPoint;
-                break;
-            }
-        }
-        return endPoint;
-    }
-
     private Map<EndPoint, EndPoint> getHintedMapForEndpoints(EndPoint[] topN)
     {
         List<EndPoint> liveList = new ArrayList<EndPoint>();
@@ -123,7 +95,29 @@
             }
             else
             {
-                EndPoint endPoint = getNextAvailableEndPoint(topN[i], Arrays.asList(topN), liveList);
+                EndPoint endPoint = null;
+                Map<Token, EndPoint> tokenToEndPointMap = tokenMetadata_.cloneTokenEndPointMap();
+                List tokens = new ArrayList(tokenToEndPointMap.keySet());
+                Collections.sort(tokens);
+                Token token = tokenMetadata_.getToken(topN[i]);
+                int index = Collections.binarySearch(tokens, token);
+                if(index < 0)
+                {
+                    index = (index + 1) * (-1);
+                    if (index >= tokens.size())
+                        index = 0;
+                }
+                int totalNodes = tokens.size();
+                int startIndex = (index+1)%totalNodes;
+                for (int i1 = startIndex, count = 1; count < totalNodes ; ++count, i1 = (i1 +1)%totalNodes)
+                {
+                    EndPoint tmpEndPoint = tokenToEndPointMap.get(tokens.get(i1));
+                    if(FailureDetector.instance().isAlive(tmpEndPoint) && !Arrays.asList(topN).contains(tmpEndPoint) && !liveList.contains(tmpEndPoint))
+                    {
+                        endPoint = tmpEndPoint;
+                        break;
+                    }
+                }
                 if(endPoint != null)
                 {
                     map.put(endPoint, topN[i]);