UNPKG

cassandra-server

Version:

A thin Javascript wrapper around Apache Cassandra to provide out of the box server support

669 lines (662 loc) 30.4 kB
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <!-- NewPage --> <html lang="en"> <head> <!-- Generated by javadoc (version 1.7.0_67) on Sun Sep 07 15:29:29 CEST 2014 --> <title>MerkleTree (apache-cassandra API)</title> <meta name="date" content="2014-09-07"> <link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style"> </head> <body> <script type="text/javascript"><!-- if (location.href.indexOf('is-external=true') == -1) { parent.document.title="MerkleTree (apache-cassandra API)"; } //--> </script> <noscript> <div>JavaScript is disabled on your browser.</div> </noscript> <!-- ========= START OF TOP NAVBAR ======= --> <div class="topNav"><a name="navbar_top"> <!-- --> </a><a href="#skip-navbar_top" title="Skip navigation links"></a><a name="navbar_top_firstrow"> <!-- --> </a> <ul class="navList" title="Navigation"> <li><a href="../../../../overview-summary.html">Overview</a></li> <li><a href="package-summary.html">Package</a></li> <li class="navBarCell1Rev">Class</li> <li><a href="class-use/MerkleTree.html">Use</a></li> <li><a href="package-tree.html">Tree</a></li> <li><a href="../../../../deprecated-list.html">Deprecated</a></li> <li><a href="../../../../index-all.html">Index</a></li> <li><a href="../../../../help-doc.html">Help</a></li> </ul> </div> <div class="subNav"> <ul class="navList"> <li><a href="../../../../org/apache/cassandra/utils/MergeIterator.Reducer.html" title="class in org.apache.cassandra.utils"><span class="strong">Prev Class</span></a></li> <li><a href="../../../../org/apache/cassandra/utils/MerkleTree.MerkleTreeSerializer.html" title="class in org.apache.cassandra.utils"><span class="strong">Next Class</span></a></li> </ul> <ul class="navList"> <li><a href="../../../../index.html?org/apache/cassandra/utils/MerkleTree.html" target="_top">Frames</a></li> <li><a href="MerkleTree.html" target="_top">No Frames</a></li> </ul> <ul class="navList" id="allclasses_navbar_top"> <li><a href="../../../../allclasses-noframe.html">All Classes</a></li> </ul> <div> <script type="text/javascript"><!-- allClassesLink = document.getElementById("allclasses_navbar_top"); if(window==top) { allClassesLink.style.display = "block"; } else { allClassesLink.style.display = "none"; } //--> </script> </div> <div> <ul class="subNavList"> <li>Summary:&nbsp;</li> <li><a href="#nested_class_summary">Nested</a>&nbsp;|&nbsp;</li> <li><a href="#field_summary">Field</a>&nbsp;|&nbsp;</li> <li><a href="#constructor_summary">Constr</a>&nbsp;|&nbsp;</li> <li><a href="#method_summary">Method</a></li> </ul> <ul class="subNavList"> <li>Detail:&nbsp;</li> <li><a href="#field_detail">Field</a>&nbsp;|&nbsp;</li> <li><a href="#constructor_detail">Constr</a>&nbsp;|&nbsp;</li> <li><a href="#method_detail">Method</a></li> </ul> </div> <a name="skip-navbar_top"> <!-- --> </a></div> <!-- ========= END OF TOP NAVBAR ========= --> <!-- ======== START OF CLASS DATA ======== --> <div class="header"> <div class="subTitle">org.apache.cassandra.utils</div> <h2 title="Class MerkleTree" class="title">Class MerkleTree</h2> </div> <div class="contentContainer"> <ul class="inheritance"> <li>java.lang.Object</li> <li> <ul class="inheritance"> <li>org.apache.cassandra.utils.MerkleTree</li> </ul> </li> </ul> <div class="description"> <ul class="blockList"> <li class="blockList"> <dl> <dt>All Implemented Interfaces:</dt> <dd>java.io.Serializable</dd> </dl> <hr> <br> <pre>public class <span class="strong">MerkleTree</span> extends java.lang.Object implements java.io.Serializable</pre> <div class="block">A MerkleTree implemented as a binary tree. A MerkleTree is a full binary tree that represents a perfect binary tree of depth 'hashdepth'. In a perfect binary tree, each leaf contains a sequentially hashed range, and each inner node contains the binary hash of its two children. In the MerkleTree, many ranges will not be split to the full depth of the perfect binary tree: the leaves of this tree are Leaf objects, which contain the computed values of the nodes that would be below them if the tree were perfect. The hash values of the inner nodes of the MerkleTree are calculated lazily based on their children when the hash of a range is requested with hash(range). Inputs passed to TreeRange.validate should be calculated using a very secure hash, because all hashing internal to the tree is accomplished using XOR. If two MerkleTrees have the same hashdepth, they represent a perfect tree of the same depth, and can always be compared, regardless of size or splits.</div> <dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../serialized-form.html#org.apache.cassandra.utils.MerkleTree">Serialized Form</a></dd></dl> </li> </ul> </div> <div class="summary"> <ul class="blockList"> <li class="blockList"> <!-- ======== NESTED CLASS SUMMARY ======== --> <ul class="blockList"> <li class="blockList"><a name="nested_class_summary"> <!-- --> </a> <h3>Nested Class Summary</h3> <table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Nested Class Summary table, listing nested classes, and an explanation"> <caption><span>Nested Classes</span><span class="tabEnd">&nbsp;</span></caption> <tr> <th class="colFirst" scope="col">Modifier and Type</th> <th class="colLast" scope="col">Class and Description</th> </tr> <tr class="altColor"> <td class="colFirst"><code>static class&nbsp;</code></td> <td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/utils/MerkleTree.MerkleTreeSerializer.html" title="class in org.apache.cassandra.utils">MerkleTree.MerkleTreeSerializer</a></strong></code>&nbsp;</td> </tr> <tr class="rowColor"> <td class="colFirst"><code>static class&nbsp;</code></td> <td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/utils/MerkleTree.RowHash.html" title="class in org.apache.cassandra.utils">MerkleTree.RowHash</a></strong></code> <div class="block">Hash value representing a row, to be used to pass hashes to the MerkleTree.</div> </td> </tr> <tr class="altColor"> <td class="colFirst"><code>static class&nbsp;</code></td> <td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/utils/MerkleTree.TreeDifference.html" title="class in org.apache.cassandra.utils">MerkleTree.TreeDifference</a></strong></code>&nbsp;</td> </tr> <tr class="rowColor"> <td class="colFirst"><code>static class&nbsp;</code></td> <td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/utils/MerkleTree.TreeRange.html" title="class in org.apache.cassandra.utils">MerkleTree.TreeRange</a></strong></code> <div class="block">The public interface to a range in the tree.</div> </td> </tr> <tr class="altColor"> <td class="colFirst"><code>static class&nbsp;</code></td> <td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/utils/MerkleTree.TreeRangeIterator.html" title="class in org.apache.cassandra.utils">MerkleTree.TreeRangeIterator</a></strong></code> <div class="block">Returns the leaf (range) of a given tree in increasing order.</div> </td> </tr> </table> </li> </ul> <!-- =========== FIELD SUMMARY =========== --> <ul class="blockList"> <li class="blockList"><a name="field_summary"> <!-- --> </a> <h3>Field Summary</h3> <table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation"> <caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption> <tr> <th class="colFirst" scope="col">Modifier and Type</th> <th class="colLast" scope="col">Field and Description</th> </tr> <tr class="altColor"> <td class="colFirst"><code>static int</code></td> <td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/utils/MerkleTree.html#CONSISTENT">CONSISTENT</a></strong></code>&nbsp;</td> </tr> <tr class="rowColor"> <td class="colFirst"><code><a href="../../../../org/apache/cassandra/dht/Range.html" title="class in org.apache.cassandra.dht">Range</a>&lt;<a href="../../../../org/apache/cassandra/dht/Token.html" title="class in org.apache.cassandra.dht">Token</a>&gt;</code></td> <td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/utils/MerkleTree.html#fullRange">fullRange</a></strong></code> <div class="block">The top level range that this MerkleTree covers.</div> </td> </tr> <tr class="altColor"> <td class="colFirst"><code>static int</code></td> <td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/utils/MerkleTree.html#FULLY_INCONSISTENT">FULLY_INCONSISTENT</a></strong></code>&nbsp;</td> </tr> <tr class="rowColor"> <td class="colFirst"><code>byte</code></td> <td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/utils/MerkleTree.html#hashdepth">hashdepth</a></strong></code>&nbsp;</td> </tr> <tr class="altColor"> <td class="colFirst"><code>static int</code></td> <td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/utils/MerkleTree.html#PARTIALLY_INCONSISTENT">PARTIALLY_INCONSISTENT</a></strong></code>&nbsp;</td> </tr> <tr class="rowColor"> <td class="colFirst"><code>static byte</code></td> <td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/utils/MerkleTree.html#RECOMMENDED_DEPTH">RECOMMENDED_DEPTH</a></strong></code>&nbsp;</td> </tr> <tr class="altColor"> <td class="colFirst"><code>static <a href="../../../../org/apache/cassandra/utils/MerkleTree.MerkleTreeSerializer.html" title="class in org.apache.cassandra.utils">MerkleTree.MerkleTreeSerializer</a></code></td> <td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/utils/MerkleTree.html#serializer">serializer</a></strong></code>&nbsp;</td> </tr> </table> </li> </ul> <!-- ======== CONSTRUCTOR SUMMARY ======== --> <ul class="blockList"> <li class="blockList"><a name="constructor_summary"> <!-- --> </a> <h3>Constructor Summary</h3> <table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation"> <caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption> <tr> <th class="colOne" scope="col">Constructor and Description</th> </tr> <tr class="altColor"> <td class="colOne"><code><strong><a href="../../../../org/apache/cassandra/utils/MerkleTree.html#MerkleTree(org.apache.cassandra.dht.IPartitioner,%20org.apache.cassandra.dht.Range,%20byte,%20long)">MerkleTree</a></strong>(<a href="../../../../org/apache/cassandra/dht/IPartitioner.html" title="interface in org.apache.cassandra.dht">IPartitioner</a>&nbsp;partitioner, <a href="../../../../org/apache/cassandra/dht/Range.html" title="class in org.apache.cassandra.dht">Range</a>&lt;<a href="../../../../org/apache/cassandra/dht/Token.html" title="class in org.apache.cassandra.dht">Token</a>&gt;&nbsp;range, byte&nbsp;hashdepth, long&nbsp;maxsize)</code>&nbsp;</td> </tr> </table> </li> </ul> <!-- ========== METHOD SUMMARY =========== --> <ul class="blockList"> <li class="blockList"><a name="method_summary"> <!-- --> </a> <h3>Method Summary</h3> <table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation"> <caption><span>Methods</span><span class="tabEnd">&nbsp;</span></caption> <tr> <th class="colFirst" scope="col">Modifier and Type</th> <th class="colLast" scope="col">Method and Description</th> </tr> <tr class="altColor"> <td class="colFirst"><code>static java.util.List&lt;<a href="../../../../org/apache/cassandra/utils/MerkleTree.TreeRange.html" title="class in org.apache.cassandra.utils">MerkleTree.TreeRange</a>&gt;</code></td> <td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/utils/MerkleTree.html#difference(org.apache.cassandra.utils.MerkleTree,%20org.apache.cassandra.utils.MerkleTree)">difference</a></strong>(<a href="../../../../org/apache/cassandra/utils/MerkleTree.html" title="class in org.apache.cassandra.utils">MerkleTree</a>&nbsp;ltree, <a href="../../../../org/apache/cassandra/utils/MerkleTree.html" title="class in org.apache.cassandra.utils">MerkleTree</a>&nbsp;rtree)</code>&nbsp;</td> </tr> <tr class="rowColor"> <td class="colFirst"><code><a href="../../../../org/apache/cassandra/utils/MerkleTree.TreeRange.html" title="class in org.apache.cassandra.utils">MerkleTree.TreeRange</a></code></td> <td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/utils/MerkleTree.html#get(org.apache.cassandra.dht.Token)">get</a></strong>(<a href="../../../../org/apache/cassandra/dht/Token.html" title="class in org.apache.cassandra.dht">Token</a>&nbsp;t)</code> <div class="block">For testing purposes.</div> </td> </tr> <tr class="altColor"> <td class="colFirst"><code>byte[]</code></td> <td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/utils/MerkleTree.html#hash(org.apache.cassandra.dht.Range)">hash</a></strong>(<a href="../../../../org/apache/cassandra/dht/Range.html" title="class in org.apache.cassandra.dht">Range</a>&lt;<a href="../../../../org/apache/cassandra/dht/Token.html" title="class in org.apache.cassandra.dht">Token</a>&gt;&nbsp;range)</code> <div class="block">Hash the given range in the tree.</div> </td> </tr> <tr class="rowColor"> <td class="colFirst"><code><a href="../../../../org/apache/cassandra/utils/EstimatedHistogram.html" title="class in org.apache.cassandra.utils">EstimatedHistogram</a></code></td> <td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/utils/MerkleTree.html#histogramOfRowCountPerLeaf()">histogramOfRowCountPerLeaf</a></strong>()</code>&nbsp;</td> </tr> <tr class="altColor"> <td class="colFirst"><code><a href="../../../../org/apache/cassandra/utils/EstimatedHistogram.html" title="class in org.apache.cassandra.utils">EstimatedHistogram</a></code></td> <td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/utils/MerkleTree.html#histogramOfRowSizePerLeaf()">histogramOfRowSizePerLeaf</a></strong>()</code>&nbsp;</td> </tr> <tr class="rowColor"> <td class="colFirst"><code>void</code></td> <td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/utils/MerkleTree.html#init()">init</a></strong>()</code> <div class="block">Initializes this tree by splitting it until hashdepth is reached, or until an additional level of splits would violate maxsize.</div> </td> </tr> <tr class="altColor"> <td class="colFirst"><code>void</code></td> <td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/utils/MerkleTree.html#invalidate(org.apache.cassandra.dht.Token)">invalidate</a></strong>(<a href="../../../../org/apache/cassandra/dht/Token.html" title="class in org.apache.cassandra.dht">Token</a>&nbsp;t)</code> <div class="block">Invalidates the ranges containing the given token.</div> </td> </tr> <tr class="rowColor"> <td class="colFirst"><code><a href="../../../../org/apache/cassandra/utils/MerkleTree.TreeRangeIterator.html" title="class in org.apache.cassandra.utils">MerkleTree.TreeRangeIterator</a></code></td> <td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/utils/MerkleTree.html#invalids()">invalids</a></strong>()</code> <div class="block">Returns a lazy iterator of invalid TreeRanges that need to be filled in order to make the given Range valid.</div> </td> </tr> <tr class="altColor"> <td class="colFirst"><code>long</code></td> <td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/utils/MerkleTree.html#maxsize()">maxsize</a></strong>()</code>&nbsp;</td> </tr> <tr class="rowColor"> <td class="colFirst"><code>void</code></td> <td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/utils/MerkleTree.html#maxsize(long)">maxsize</a></strong>(long&nbsp;maxsize)</code>&nbsp;</td> </tr> <tr class="altColor"> <td class="colFirst"><code><a href="../../../../org/apache/cassandra/dht/IPartitioner.html" title="interface in org.apache.cassandra.dht">IPartitioner</a></code></td> <td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/utils/MerkleTree.html#partitioner()">partitioner</a></strong>()</code>&nbsp;</td> </tr> <tr class="rowColor"> <td class="colFirst"><code>long</code></td> <td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/utils/MerkleTree.html#size()">size</a></strong>()</code> <div class="block">The number of distinct ranges contained in this tree.</div> </td> </tr> <tr class="altColor"> <td class="colFirst"><code>boolean</code></td> <td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/utils/MerkleTree.html#split(org.apache.cassandra.dht.Token)">split</a></strong>(<a href="../../../../org/apache/cassandra/dht/Token.html" title="class in org.apache.cassandra.dht">Token</a>&nbsp;t)</code> <div class="block">Splits the range containing the given token, if no tree limits would be violated.</div> </td> </tr> <tr class="rowColor"> <td class="colFirst"><code>java.lang.String</code></td> <td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/utils/MerkleTree.html#toString()">toString</a></strong>()</code>&nbsp;</td> </tr> </table> <ul class="blockList"> <li class="blockList"><a name="methods_inherited_from_class_java.lang.Object"> <!-- --> </a> <h3>Methods inherited from class&nbsp;java.lang.Object</h3> <code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait</code></li> </ul> </li> </ul> </li> </ul> </div> <div class="details"> <ul class="blockList"> <li class="blockList"> <!-- ============ FIELD DETAIL =========== --> <ul class="blockList"> <li class="blockList"><a name="field_detail"> <!-- --> </a> <h3>Field Detail</h3> <a name="serializer"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>serializer</h4> <pre>public static final&nbsp;<a href="../../../../org/apache/cassandra/utils/MerkleTree.MerkleTreeSerializer.html" title="class in org.apache.cassandra.utils">MerkleTree.MerkleTreeSerializer</a> serializer</pre> </li> </ul> <a name="RECOMMENDED_DEPTH"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>RECOMMENDED_DEPTH</h4> <pre>public static final&nbsp;byte RECOMMENDED_DEPTH</pre> <dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../constant-values.html#org.apache.cassandra.utils.MerkleTree.RECOMMENDED_DEPTH">Constant Field Values</a></dd></dl> </li> </ul> <a name="CONSISTENT"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>CONSISTENT</h4> <pre>public static final&nbsp;int CONSISTENT</pre> <dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../constant-values.html#org.apache.cassandra.utils.MerkleTree.CONSISTENT">Constant Field Values</a></dd></dl> </li> </ul> <a name="FULLY_INCONSISTENT"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>FULLY_INCONSISTENT</h4> <pre>public static final&nbsp;int FULLY_INCONSISTENT</pre> <dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../constant-values.html#org.apache.cassandra.utils.MerkleTree.FULLY_INCONSISTENT">Constant Field Values</a></dd></dl> </li> </ul> <a name="PARTIALLY_INCONSISTENT"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>PARTIALLY_INCONSISTENT</h4> <pre>public static final&nbsp;int PARTIALLY_INCONSISTENT</pre> <dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../constant-values.html#org.apache.cassandra.utils.MerkleTree.PARTIALLY_INCONSISTENT">Constant Field Values</a></dd></dl> </li> </ul> <a name="hashdepth"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>hashdepth</h4> <pre>public final&nbsp;byte hashdepth</pre> </li> </ul> <a name="fullRange"> <!-- --> </a> <ul class="blockListLast"> <li class="blockList"> <h4>fullRange</h4> <pre>public final&nbsp;<a href="../../../../org/apache/cassandra/dht/Range.html" title="class in org.apache.cassandra.dht">Range</a>&lt;<a href="../../../../org/apache/cassandra/dht/Token.html" title="class in org.apache.cassandra.dht">Token</a>&gt; fullRange</pre> <div class="block">The top level range that this MerkleTree covers.</div> </li> </ul> </li> </ul> <!-- ========= CONSTRUCTOR DETAIL ======== --> <ul class="blockList"> <li class="blockList"><a name="constructor_detail"> <!-- --> </a> <h3>Constructor Detail</h3> <a name="MerkleTree(org.apache.cassandra.dht.IPartitioner, org.apache.cassandra.dht.Range, byte, long)"> <!-- --> </a> <ul class="blockListLast"> <li class="blockList"> <h4>MerkleTree</h4> <pre>public&nbsp;MerkleTree(<a href="../../../../org/apache/cassandra/dht/IPartitioner.html" title="interface in org.apache.cassandra.dht">IPartitioner</a>&nbsp;partitioner, <a href="../../../../org/apache/cassandra/dht/Range.html" title="class in org.apache.cassandra.dht">Range</a>&lt;<a href="../../../../org/apache/cassandra/dht/Token.html" title="class in org.apache.cassandra.dht">Token</a>&gt;&nbsp;range, byte&nbsp;hashdepth, long&nbsp;maxsize)</pre> <dl><dt><span class="strong">Parameters:</span></dt><dd><code>partitioner</code> - The partitioner in use.</dd><dd><code>range</code> - the range this tree covers</dd><dd><code>hashdepth</code> - The maximum depth of the tree. 100/(2^depth) is the % of the key space covered by each subrange of a fully populated tree.</dd><dd><code>maxsize</code> - The maximum number of subranges in the tree.</dd></dl> </li> </ul> </li> </ul> <!-- ============ METHOD DETAIL ========== --> <ul class="blockList"> <li class="blockList"><a name="method_detail"> <!-- --> </a> <h3>Method Detail</h3> <a name="init()"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>init</h4> <pre>public&nbsp;void&nbsp;init()</pre> <div class="block">Initializes this tree by splitting it until hashdepth is reached, or until an additional level of splits would violate maxsize. NB: Replaces all nodes in the tree.</div> </li> </ul> <a name="partitioner()"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>partitioner</h4> <pre>public&nbsp;<a href="../../../../org/apache/cassandra/dht/IPartitioner.html" title="interface in org.apache.cassandra.dht">IPartitioner</a>&nbsp;partitioner()</pre> </li> </ul> <a name="size()"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>size</h4> <pre>public&nbsp;long&nbsp;size()</pre> <div class="block">The number of distinct ranges contained in this tree. This is a reasonable measure of the memory usage of the tree (assuming 'this.order' is significant).</div> </li> </ul> <a name="maxsize()"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>maxsize</h4> <pre>public&nbsp;long&nbsp;maxsize()</pre> </li> </ul> <a name="maxsize(long)"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>maxsize</h4> <pre>public&nbsp;void&nbsp;maxsize(long&nbsp;maxsize)</pre> </li> </ul> <a name="difference(org.apache.cassandra.utils.MerkleTree, org.apache.cassandra.utils.MerkleTree)"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>difference</h4> <pre>public static&nbsp;java.util.List&lt;<a href="../../../../org/apache/cassandra/utils/MerkleTree.TreeRange.html" title="class in org.apache.cassandra.utils">MerkleTree.TreeRange</a>&gt;&nbsp;difference(<a href="../../../../org/apache/cassandra/utils/MerkleTree.html" title="class in org.apache.cassandra.utils">MerkleTree</a>&nbsp;ltree, <a href="../../../../org/apache/cassandra/utils/MerkleTree.html" title="class in org.apache.cassandra.utils">MerkleTree</a>&nbsp;rtree)</pre> <dl><dt><span class="strong">Parameters:</span></dt><dd><code>ltree</code> - First tree.</dd><dd><code>rtree</code> - Second tree.</dd> <dt><span class="strong">Returns:</span></dt><dd>A list of the largest contiguous ranges where the given trees disagree.</dd></dl> </li> </ul> <a name="get(org.apache.cassandra.dht.Token)"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>get</h4> <pre>public&nbsp;<a href="../../../../org/apache/cassandra/utils/MerkleTree.TreeRange.html" title="class in org.apache.cassandra.utils">MerkleTree.TreeRange</a>&nbsp;get(<a href="../../../../org/apache/cassandra/dht/Token.html" title="class in org.apache.cassandra.dht">Token</a>&nbsp;t)</pre> <div class="block">For testing purposes. Gets the smallest range containing the token.</div> </li> </ul> <a name="invalidate(org.apache.cassandra.dht.Token)"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>invalidate</h4> <pre>public&nbsp;void&nbsp;invalidate(<a href="../../../../org/apache/cassandra/dht/Token.html" title="class in org.apache.cassandra.dht">Token</a>&nbsp;t)</pre> <div class="block">Invalidates the ranges containing the given token. Useful for testing.</div> </li> </ul> <a name="hash(org.apache.cassandra.dht.Range)"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>hash</h4> <pre>public&nbsp;byte[]&nbsp;hash(<a href="../../../../org/apache/cassandra/dht/Range.html" title="class in org.apache.cassandra.dht">Range</a>&lt;<a href="../../../../org/apache/cassandra/dht/Token.html" title="class in org.apache.cassandra.dht">Token</a>&gt;&nbsp;range)</pre> <div class="block">Hash the given range in the tree. The range must have been generated with recursive applications of partitioner.midpoint(). NB: Currently does not support wrapping ranges that do not end with partitioner.getMinimumToken().</div> <dl><dt><span class="strong">Returns:</span></dt><dd>Null if any subrange of the range is invalid, or if the exact range cannot be calculated using this tree.</dd></dl> </li> </ul> <a name="split(org.apache.cassandra.dht.Token)"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>split</h4> <pre>public&nbsp;boolean&nbsp;split(<a href="../../../../org/apache/cassandra/dht/Token.html" title="class in org.apache.cassandra.dht">Token</a>&nbsp;t)</pre> <div class="block">Splits the range containing the given token, if no tree limits would be violated. If the range would be split to a depth below hashdepth, or if the tree already contains maxsize subranges, this operation will fail.</div> <dl><dt><span class="strong">Returns:</span></dt><dd>True if the range was successfully split.</dd></dl> </li> </ul> <a name="invalids()"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>invalids</h4> <pre>public&nbsp;<a href="../../../../org/apache/cassandra/utils/MerkleTree.TreeRangeIterator.html" title="class in org.apache.cassandra.utils">MerkleTree.TreeRangeIterator</a>&nbsp;invalids()</pre> <div class="block">Returns a lazy iterator of invalid TreeRanges that need to be filled in order to make the given Range valid.</div> </li> </ul> <a name="histogramOfRowSizePerLeaf()"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>histogramOfRowSizePerLeaf</h4> <pre>public&nbsp;<a href="../../../../org/apache/cassandra/utils/EstimatedHistogram.html" title="class in org.apache.cassandra.utils">EstimatedHistogram</a>&nbsp;histogramOfRowSizePerLeaf()</pre> </li> </ul> <a name="histogramOfRowCountPerLeaf()"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>histogramOfRowCountPerLeaf</h4> <pre>public&nbsp;<a href="../../../../org/apache/cassandra/utils/EstimatedHistogram.html" title="class in org.apache.cassandra.utils">EstimatedHistogram</a>&nbsp;histogramOfRowCountPerLeaf()</pre> </li> </ul> <a name="toString()"> <!-- --> </a> <ul class="blockListLast"> <li class="blockList"> <h4>toString</h4> <pre>public&nbsp;java.lang.String&nbsp;toString()</pre> <dl> <dt><strong>Overrides:</strong></dt> <dd><code>toString</code>&nbsp;in class&nbsp;<code>java.lang.Object</code></dd> </dl> </li> </ul> </li> </ul> </li> </ul> </div> </div> <!-- ========= END OF CLASS DATA ========= --> <!-- ======= START OF BOTTOM NAVBAR ====== --> <div class="bottomNav"><a name="navbar_bottom"> <!-- --> </a><a href="#skip-navbar_bottom" title="Skip navigation links"></a><a name="navbar_bottom_firstrow"> <!-- --> </a> <ul class="navList" title="Navigation"> <li><a href="../../../../overview-summary.html">Overview</a></li> <li><a href="package-summary.html">Package</a></li> <li class="navBarCell1Rev">Class</li> <li><a href="class-use/MerkleTree.html">Use</a></li> <li><a href="package-tree.html">Tree</a></li> <li><a href="../../../../deprecated-list.html">Deprecated</a></li> <li><a href="../../../../index-all.html">Index</a></li> <li><a href="../../../../help-doc.html">Help</a></li> </ul> </div> <div class="subNav"> <ul class="navList"> <li><a href="../../../../org/apache/cassandra/utils/MergeIterator.Reducer.html" title="class in org.apache.cassandra.utils"><span class="strong">Prev Class</span></a></li> <li><a href="../../../../org/apache/cassandra/utils/MerkleTree.MerkleTreeSerializer.html" title="class in org.apache.cassandra.utils"><span class="strong">Next Class</span></a></li> </ul> <ul class="navList"> <li><a href="../../../../index.html?org/apache/cassandra/utils/MerkleTree.html" target="_top">Frames</a></li> <li><a href="MerkleTree.html" target="_top">No Frames</a></li> </ul> <ul class="navList" id="allclasses_navbar_bottom"> <li><a href="../../../../allclasses-noframe.html">All Classes</a></li> </ul> <div> <script type="text/javascript"><!-- allClassesLink = document.getElementById("allclasses_navbar_bottom"); if(window==top) { allClassesLink.style.display = "block"; } else { allClassesLink.style.display = "none"; } //--> </script> </div> <div> <ul class="subNavList"> <li>Summary:&nbsp;</li> <li><a href="#nested_class_summary">Nested</a>&nbsp;|&nbsp;</li> <li><a href="#field_summary">Field</a>&nbsp;|&nbsp;</li> <li><a href="#constructor_summary">Constr</a>&nbsp;|&nbsp;</li> <li><a href="#method_summary">Method</a></li> </ul> <ul class="subNavList"> <li>Detail:&nbsp;</li> <li><a href="#field_detail">Field</a>&nbsp;|&nbsp;</li> <li><a href="#constructor_detail">Constr</a>&nbsp;|&nbsp;</li> <li><a href="#method_detail">Method</a></li> </ul> </div> <a name="skip-navbar_bottom"> <!-- --> </a></div> <!-- ======== END OF BOTTOM NAVBAR ======= --> <p class="legalCopy"><small>Copyright &copy; 2014 The Apache Software Foundation</small></p> </body> </html>