Package org.apache.cassandra.utils
Class MerkleTrees
java.lang.Object
org.apache.cassandra.utils.MerkleTrees
- All Implemented Interfaces:
Iterable<Map.Entry<Range<Token>,MerkleTree>>
Wrapper class for handling of multiple MerkleTrees at once.
The MerkleTree's are divided in Ranges of non-overlapping tokens.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classclass -
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionaddMerkleTree(int maxsize, byte hashdepth, Range<Token> range) addMerkleTree(int maxsize, Range<Token> range) Add a MerkleTree with the defined size and range.voidaddMerkleTrees(int maxsize, Collection<Range<Token>> ranges) Add merkle tree's with the defined maxsize and ranges.difference(MerkleTrees ltrees, MerkleTrees rtrees) Get the differences between the two sets of MerkleTrees.Get the MerkleTree.Range responsible for the given token.getMerkleTree(Range<Token> range) Get the MerkleTree responsible for the given token range.byte[]voidinit()Init all MerkleTree's with an even tree distribution.voidInit a selected MerkleTree with an even tree distribution.voidinvalidate(Token t) Invalidate the MerkleTree responsible for the given token.iterator()Get an iterator of all ranges and their MerkleTrees.voidlogRowCountPerLeaf(org.slf4j.Logger logger) Log the row count per leaf for all MerkleTrees.voidlogRowSizePerLeaf(org.slf4j.Logger logger) Log the row size per leaf for all MerkleTrees.voidGet the partitioner in use.Get an iterator for all the iterator generated by the MerkleTrees.ranges()Get the ranges that these merkle trees covers.voidrelease()Dereference all merkle trees and release direct memory for all off-heap trees.longrowCount()longsize()booleanSplit the MerkleTree responsible for the given token.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface java.lang.Iterable
forEach, spliterator
-
Field Details
-
serializer
-
-
Constructor Details
-
MerkleTrees
Creates empty MerkleTrees object.- Parameters:
partitioner- The partitioner to use
-
-
Method Details
-
ranges
Get the ranges that these merkle trees covers.- Returns:
-
partitioner
Get the partitioner in use.- Returns:
-
addMerkleTrees
Add merkle tree's with the defined maxsize and ranges.- Parameters:
maxsize-ranges-
-
addMerkleTree
Add a MerkleTree with the defined size and range.- Parameters:
maxsize-range-- Returns:
- The created merkle tree.
-
addMerkleTree
-
get
Get the MerkleTree.Range responsible for the given token.- Parameters:
t-- Returns:
-
init
public void init()Init all MerkleTree's with an even tree distribution. -
release
public void release()Dereference all merkle trees and release direct memory for all off-heap trees. -
init
Init a selected MerkleTree with an even tree distribution.- Parameters:
range-
-
split
Split the MerkleTree responsible for the given token.- Parameters:
t-- Returns:
-
invalidate
Invalidate the MerkleTree responsible for the given token.- Parameters:
t-
-
getMerkleTree
Get the MerkleTree responsible for the given token range.- Parameters:
range-- Returns:
-
size
public long size() -
maxsize
-
rangeIterator
Get an iterator for all the iterator generated by the MerkleTrees.- Returns:
-
logRowCountPerLeaf
public void logRowCountPerLeaf(org.slf4j.Logger logger) Log the row count per leaf for all MerkleTrees.- Parameters:
logger-
-
logRowSizePerLeaf
public void logRowSizePerLeaf(org.slf4j.Logger logger) Log the row size per leaf for all MerkleTrees.- Parameters:
logger-
-
hash
-
iterator
Get an iterator of all ranges and their MerkleTrees. -
rowCount
public long rowCount() -
tryMoveOffHeap
- Returns:
- a new
MerkleTreesinstance with all trees moved off heap. - Throws:
IOException
-
difference
Get the differences between the two sets of MerkleTrees.- Parameters:
ltrees-rtrees-- Returns:
-