Updated Branches: refs/heads/cassandra-1.2 2513480cc -> e4b3d403f
Fix AssertionError during repair patch by yukim and slebresne; reviewed by yukim and slebresne for CASSANDRA-5245 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/e4b3d403 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/e4b3d403 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/e4b3d403 Branch: refs/heads/cassandra-1.2 Commit: e4b3d403f3a2885dcf45ac574c9e4875f91a9724 Parents: 444a551 Author: Sylvain Lebresne <[email protected]> Authored: Tue Mar 12 19:01:45 2013 +0100 Committer: Sylvain Lebresne <[email protected]> Committed: Tue Mar 12 19:01:45 2013 +0100 ---------------------------------------------------------------------- CHANGES.txt | 1 + .../cassandra/service/AntiEntropyService.java | 2 +- .../org/apache/cassandra/utils/MerkleTree.java | 3 +++ 3 files changed, 5 insertions(+), 1 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/e4b3d403/CHANGES.txt ---------------------------------------------------------------------- diff --git a/CHANGES.txt b/CHANGES.txt index 3550ef6..d249806 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -19,6 +19,7 @@ * cqlsh: Fix COPY FROM value quoting and null handling (CASSANDRA-5305) * Fix repair -pr for vnodes (CASSANDRA-5329) * Relax CL for auth queries for non-default users (CASSANDRA-5310) + * Fix AssertionError during repair (CASSANDRA-5245) Merged from 1.1: * fix logging of "Found table data in data directories" when only system tables are present (CASSANDRA-5289) http://git-wip-us.apache.org/repos/asf/cassandra/blob/e4b3d403/src/java/org/apache/cassandra/service/AntiEntropyService.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/service/AntiEntropyService.java b/src/java/org/apache/cassandra/service/AntiEntropyService.java index a7df82d..d532d07 100644 --- a/src/java/org/apache/cassandra/service/AntiEntropyService.java +++ b/src/java/org/apache/cassandra/service/AntiEntropyService.java @@ -296,7 +296,7 @@ public class AntiEntropyService public void prepare(ColumnFamilyStore cfs) { - if (tree.partitioner() instanceof RandomPartitioner) + if (!tree.partitioner().preservesOrder()) { // You can't beat an even tree distribution for md5 tree.init(); http://git-wip-us.apache.org/repos/asf/cassandra/blob/e4b3d403/src/java/org/apache/cassandra/utils/MerkleTree.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/utils/MerkleTree.java b/src/java/org/apache/cassandra/utils/MerkleTree.java index 0310827..d9040d9 100644 --- a/src/java/org/apache/cassandra/utils/MerkleTree.java +++ b/src/java/org/apache/cassandra/utils/MerkleTree.java @@ -241,6 +241,9 @@ public class MerkleTree implements Serializable */ static int differenceHelper(MerkleTree ltree, MerkleTree rtree, List<TreeRange> diff, TreeRange active) { + if (active.depth == Byte.MAX_VALUE) + return CONSISTENT; + Token midpoint = ltree.partitioner().midpoint(active.left, active.right); TreeRange left = new TreeRange(null, active.left, midpoint, inc(active.depth), null); TreeRange right = new TreeRange(null, midpoint, active.right, inc(active.depth), null);
