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))); + } } } }