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

Reply via email to