Updated Branches:
  refs/heads/cassandra-1.2 e771b0795 -> aaf18bd08
  refs/heads/trunk 4e2d76b8c -> 0387cf587


Fix InputKeyRange in CFIF
patch by Lanny Ripple and jbellis; reviewed by Alex Liu for CASSANDRA-5536


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/aaf18bd0
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/aaf18bd0
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/aaf18bd0

Branch: refs/heads/cassandra-1.2
Commit: aaf18bd08af50bbaae0954d78d5e6cbb684aded9
Parents: e771b07
Author: Jonathan Ellis <[email protected]>
Authored: Mon May 27 11:27:52 2013 -0500
Committer: Jonathan Ellis <[email protected]>
Committed: Mon May 27 11:27:52 2013 -0500

----------------------------------------------------------------------
 CHANGES.txt                                        |    1 +
 .../cassandra/hadoop/ColumnFamilyInputFormat.java  |   24 ++++++++++----
 2 files changed, 18 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/aaf18bd0/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index f49a6f7..34e5b52 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 1.2.6
+ * (Hadoop) Fix InputKeyRange in CFIF (CASSANDRA-5536)
  * Fix dealing with ridiculously large max sstable sizes in LCS 
(CASSANDRA-5589)
  * Ignore pre-truncate hints (CASSANDRA-4655)
  * Move System.exit on OOM into a separate thread (CASSANDRA-5273)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/aaf18bd0/src/java/org/apache/cassandra/hadoop/ColumnFamilyInputFormat.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/hadoop/ColumnFamilyInputFormat.java 
b/src/java/org/apache/cassandra/hadoop/ColumnFamilyInputFormat.java
index 057d46a..e95e7ad 100644
--- a/src/java/org/apache/cassandra/hadoop/ColumnFamilyInputFormat.java
+++ b/src/java/org/apache/cassandra/hadoop/ColumnFamilyInputFormat.java
@@ -121,14 +121,24 @@ public class ColumnFamilyInputFormat extends 
InputFormat<ByteBuffer, SortedMap<B
             List<Future<List<InputSplit>>> splitfutures = new 
ArrayList<Future<List<InputSplit>>>();
             KeyRange jobKeyRange = ConfigHelper.getInputKeyRange(conf);
             Range<Token> jobRange = null;
-            if (jobKeyRange != null && jobKeyRange.start_token != null)
+            if (jobKeyRange != null)
             {
-                assert partitioner.preservesOrder() : 
"ConfigHelper.setInputKeyRange(..) can only be used with a order preserving 
paritioner";
-                assert jobKeyRange.start_key == null : "only start_token 
supported";
-                assert jobKeyRange.end_key == null : "only end_token 
supported";
-                jobRange = new 
Range<Token>(partitioner.getTokenFactory().fromString(jobKeyRange.start_token),
-                                            
partitioner.getTokenFactory().fromString(jobKeyRange.end_token),
-                                            partitioner);
+                if (jobKeyRange.start_key == null)
+                {
+                    logger.warn("ignoring jobKeyRange specified without 
start_key");
+                }
+                else
+                {
+                    if (!partitioner.preservesOrder())
+                        throw new UnsupportedOperationException("KeyRange 
based on keys can only be used with a order preserving paritioner");
+                    if (jobKeyRange.start_token != null)
+                        throw new IllegalArgumentException("only start_key 
supported");
+                    if (jobKeyRange.end_token != null)
+                        throw new IllegalArgumentException("only start_key 
supported");
+                    jobRange = new 
Range<Token>(partitioner.getToken(jobKeyRange.start_key),
+                                                
partitioner.getToken(jobKeyRange.end_key),
+                                                partitioner);
+                }
             }
 
             for (TokenRange range : masterRangeNodes)

Reply via email to