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]);