Author: brandonwilliams
Date: Fri Jul 30 22:16:02 2010
New Revision: 980983

URL: http://svn.apache.org/viewvc?rev=980983&view=rev
Log:
Use LinkedHashSet in location strategies to maintain order.  Patch by Jignesh 
Dhruv reviewed by brandonwilliams for CASSANDRA-1291

Modified:
    
cassandra/trunk/src/java/org/apache/cassandra/locator/DatacenterShardStrategy.java
    cassandra/trunk/src/java/org/apache/cassandra/locator/RackAwareStrategy.java
    
cassandra/trunk/src/java/org/apache/cassandra/locator/RackUnawareStrategy.java

Modified: 
cassandra/trunk/src/java/org/apache/cassandra/locator/DatacenterShardStrategy.java
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/locator/DatacenterShardStrategy.java?rev=980983&r1=980982&r2=980983&view=diff
==============================================================================
--- 
cassandra/trunk/src/java/org/apache/cassandra/locator/DatacenterShardStrategy.java
 (original)
+++ 
cassandra/trunk/src/java/org/apache/cassandra/locator/DatacenterShardStrategy.java
 Fri Jul 30 22:16:02 2010
@@ -97,7 +97,7 @@ public class DatacenterShardStrategy ext
         int totalReplicas = getReplicationFactor(table);
         Map<String, Integer> remainingReplicas = new HashMap<String, 
Integer>(datacenters.get(table));
         Map<String, Set<String>> dcUsedRacks = new HashMap<String, 
Set<String>>();
-        Set<InetAddress> endpoints = new HashSet<InetAddress>(totalReplicas);
+        Set<InetAddress> endpoints = new 
LinkedHashSet<InetAddress>(totalReplicas);
 
         // first pass: only collect replicas on unique racks
         for (Iterator<Token> iter = 
TokenMetadata.ringIterator(tokenMetadata.sortedTokens(), searchToken);

Modified: 
cassandra/trunk/src/java/org/apache/cassandra/locator/RackAwareStrategy.java
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/locator/RackAwareStrategy.java?rev=980983&r1=980982&r2=980983&view=diff
==============================================================================
--- 
cassandra/trunk/src/java/org/apache/cassandra/locator/RackAwareStrategy.java 
(original)
+++ 
cassandra/trunk/src/java/org/apache/cassandra/locator/RackAwareStrategy.java 
Fri Jul 30 22:16:02 2010
@@ -21,7 +21,7 @@ package org.apache.cassandra.locator;
 
 import java.net.InetAddress;
 import java.util.ArrayList;
-import java.util.HashSet;
+import java.util.LinkedHashSet;
 import java.util.Iterator;
 import java.util.Set;
 
@@ -47,7 +47,7 @@ public class RackAwareStrategy extends A
     public Set<InetAddress> calculateNaturalEndpoints(Token token, 
TokenMetadata metadata, String table)
     {
         int replicas = getReplicationFactor(table);
-        Set<InetAddress> endpoints = new HashSet<InetAddress>(replicas);
+        Set<InetAddress> endpoints = new LinkedHashSet<InetAddress>(replicas);
         ArrayList<Token> tokens = metadata.sortedTokens();
 
         if (tokens.isEmpty())

Modified: 
cassandra/trunk/src/java/org/apache/cassandra/locator/RackUnawareStrategy.java
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/locator/RackUnawareStrategy.java?rev=980983&r1=980982&r2=980983&view=diff
==============================================================================
--- 
cassandra/trunk/src/java/org/apache/cassandra/locator/RackUnawareStrategy.java 
(original)
+++ 
cassandra/trunk/src/java/org/apache/cassandra/locator/RackUnawareStrategy.java 
Fri Jul 30 22:16:02 2010
@@ -21,7 +21,7 @@ package org.apache.cassandra.locator;
 
 import java.net.InetAddress;
 import java.util.ArrayList;
-import java.util.HashSet;
+import java.util.LinkedHashSet;
 import java.util.Iterator;
 import java.util.Set;
 
@@ -45,7 +45,7 @@ public class RackUnawareStrategy extends
     {
         int replicas = getReplicationFactor(table);
         ArrayList<Token> tokens = metadata.sortedTokens();
-        Set<InetAddress> endpoints = new HashSet<InetAddress>(replicas);
+        Set<InetAddress> endpoints = new LinkedHashSet<InetAddress>(replicas);
 
         if (tokens.isEmpty())
             return endpoints;


Reply via email to