Author: jbellis
Date: Mon Oct  3 19:58:18 2011
New Revision: 1178551

URL: http://svn.apache.org/viewvc?rev=1178551&view=rev
Log:
allow wrapping ranges in Hadoop queries
patch by Mck SembWever; reviewed by jbellis for CASSANDRA-3137

Modified:
    cassandra/branches/cassandra-0.8/CHANGES.txt
    
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/hadoop/ColumnFamilyInputFormat.java

Modified: cassandra/branches/cassandra-0.8/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/CHANGES.txt?rev=1178551&r1=1178550&r2=1178551&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.8/CHANGES.txt (original)
+++ cassandra/branches/cassandra-0.8/CHANGES.txt Mon Oct  3 19:58:18 2011
@@ -15,6 +15,7 @@
  * fix Scrub compaction finishing (CASSANDRA-3255)
  * Fix tool .bat files when CASSANDRA_HOME contains spaces (CASSANDRA-3258)
  * Evict gossip state immediately when a token is taken over by a new IP 
(CASSANDRA-3259)
+ * allow wrapping ranges in Hadoop queries (CASSANDRA-3137)
 
 
 0.8.6

Modified: 
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/hadoop/ColumnFamilyInputFormat.java
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/hadoop/ColumnFamilyInputFormat.java?rev=1178551&r1=1178550&r2=1178551&view=diff
==============================================================================
--- 
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/hadoop/ColumnFamilyInputFormat.java
 (original)
+++ 
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/hadoop/ColumnFamilyInputFormat.java
 Mon Oct  3 19:58:18 2011
@@ -134,13 +134,13 @@ public class ColumnFamilyInputFormat ext
 
                     if (dhtRange.intersects(jobRange))
                     {
-                        Set<Range> intersections = 
dhtRange.intersectionWith(jobRange);
-                        assert intersections.size() == 1 : "wrapping ranges 
not yet supported";
-                        Range intersection = intersections.iterator().next();
-                        range.start_token = 
partitioner.getTokenFactory().toString(intersection.left);
-                        range.end_token = 
partitioner.getTokenFactory().toString(intersection.right);
-                        // for each range, pick a live owner and ask it to 
compute bite-sized splits
-                        splitfutures.add(executor.submit(new 
SplitCallable(range, conf)));
+                        for (Range intersection: 
dhtRange.intersectionWith(jobRange))
+                        {
+                            range.start_token = 
partitioner.getTokenFactory().toString(intersection.left);
+                            range.end_token = 
partitioner.getTokenFactory().toString(intersection.right);
+                            // for each range, pick a live owner and ask it to 
compute bite-sized splits
+                            splitfutures.add(executor.submit(new 
SplitCallable(range, conf)));
+                        }
                     }
                 }
             }


Reply via email to