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