You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by al...@apache.org on 2019/08/02 13:18:45 UTC

[cassandra] 04/09: Address Marcus's review feedback

This is an automated email from the ASF dual-hosted git repository.

aleksey pushed a commit to branch 15202-4.0
in repository https://gitbox.apache.org/repos/asf/cassandra.git

commit 47864d09706927801ac1150199979cf3b3bc1c1e
Author: Aleksey Yeshchenko <al...@apache.org>
AuthorDate: Fri Jul 26 16:52:40 2019 +0100

    Address Marcus's review feedback
---
 src/java/org/apache/cassandra/utils/MerkleTree.java | 18 ++++++++++++++----
 1 file changed, 14 insertions(+), 4 deletions(-)

diff --git a/src/java/org/apache/cassandra/utils/MerkleTree.java b/src/java/org/apache/cassandra/utils/MerkleTree.java
index 2052389..bdeaa3f 100644
--- a/src/java/org/apache/cassandra/utils/MerkleTree.java
+++ b/src/java/org/apache/cassandra/utils/MerkleTree.java
@@ -262,7 +262,7 @@ public class MerkleTree
         rnode = rtree.find(left);
 
         Difference ldiff = Difference.CONSISTENT;
-        if (lnode.hashesDiffer(rnode))
+        if (null != lnode && null != rnode && lnode.hashesDiffer(rnode))
         {
             logger.debug("({}) Inconsistent digest on left sub-range {}: [{}, {}]", active.depth, left, lnode, rnode);
 
@@ -271,13 +271,18 @@ public class MerkleTree
             else
                 ldiff = differenceHelper(ltree, rtree, diff, left);
         }
+        else if (null == lnode || null == rnode)
+        {
+            logger.debug("({}) Left sub-range fully inconsistent {}", active.depth, left);
+            ldiff = Difference.FULLY_INCONSISTENT;
+        }
 
         // see if we should recurse right
         lnode = ltree.find(right);
         rnode = rtree.find(right);
 
         Difference rdiff = Difference.CONSISTENT;
-        if (lnode.hashesDiffer(rnode))
+        if (null != lnode && null != rnode && lnode.hashesDiffer(rnode))
         {
             logger.debug("({}) Inconsistent digest on right sub-range {}: [{}, {}]", active.depth, right, lnode, rnode);
 
@@ -286,6 +291,11 @@ public class MerkleTree
             else
                 rdiff = differenceHelper(ltree, rtree, diff, right);
         }
+        else if (null == lnode || null == rnode)
+        {
+            logger.debug("({}) Right sub-range fully inconsistent {}", active.depth, right);
+            rdiff = Difference.FULLY_INCONSISTENT;
+        }
 
         if (ldiff == Difference.FULLY_INCONSISTENT && rdiff == Difference.FULLY_INCONSISTENT)
         {
@@ -326,7 +336,7 @@ public class MerkleTree
      * @return {@link Node} found. If nothing found, return {@link Leaf} with empty hash.
      */
     @VisibleForTesting
-    Node find(Range<Token> range)
+    private Node find(Range<Token> range)
     {
         try
         {
@@ -334,7 +344,7 @@ public class MerkleTree
         }
         catch (StopRecursion e)
         {
-            return new OnHeapLeaf();
+            return null;
         }
     }
 


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org