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)
