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