UNPKG

cassandra-server

Version:

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

745 lines (740 loc) 40 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:30 CEST 2014 --> <title>RepairSession (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="RepairSession (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/RepairSession.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/repair/RepairMessageVerbHandler.html" title="class in org.apache.cassandra.repair"><span class="strong">Prev Class</span></a></li> <li><a href="../../../../org/apache/cassandra/repair/RequestCoordinator.html" title="class in org.apache.cassandra.repair"><span class="strong">Next Class</span></a></li> </ul> <ul class="navList"> <li><a href="../../../../index.html?org/apache/cassandra/repair/RepairSession.html" target="_top">Frames</a></li> <li><a href="RepairSession.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>Nested&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.repair</div> <h2 title="Class RepairSession" class="title">Class RepairSession</h2> </div> <div class="contentContainer"> <ul class="inheritance"> <li>java.lang.Object</li> <li> <ul class="inheritance"> <li><a href="../../../../org/apache/cassandra/utils/WrappedRunnable.html" title="class in org.apache.cassandra.utils">org.apache.cassandra.utils.WrappedRunnable</a></li> <li> <ul class="inheritance"> <li>org.apache.cassandra.repair.RepairSession</li> </ul> </li> </ul> </li> </ul> <div class="description"> <ul class="blockList"> <li class="blockList"> <dl> <dt>All Implemented Interfaces:</dt> <dd>java.lang.Runnable, <a href="../../../../org/apache/cassandra/gms/IEndpointStateChangeSubscriber.html" title="interface in org.apache.cassandra.gms">IEndpointStateChangeSubscriber</a>, <a href="../../../../org/apache/cassandra/gms/IFailureDetectionEventListener.html" title="interface in org.apache.cassandra.gms">IFailureDetectionEventListener</a>, <a href="../../../../org/apache/cassandra/repair/IRepairJobEventListener.html" title="interface in org.apache.cassandra.repair">IRepairJobEventListener</a></dd> </dl> <hr> <br> <pre>public class <span class="strong">RepairSession</span> extends <a href="../../../../org/apache/cassandra/utils/WrappedRunnable.html" title="class in org.apache.cassandra.utils">WrappedRunnable</a> implements <a href="../../../../org/apache/cassandra/gms/IEndpointStateChangeSubscriber.html" title="interface in org.apache.cassandra.gms">IEndpointStateChangeSubscriber</a>, <a href="../../../../org/apache/cassandra/gms/IFailureDetectionEventListener.html" title="interface in org.apache.cassandra.gms">IFailureDetectionEventListener</a>, <a href="../../../../org/apache/cassandra/repair/IRepairJobEventListener.html" title="interface in org.apache.cassandra.repair">IRepairJobEventListener</a></pre> <div class="block">Coordinates the (active) repair of a token range. A given RepairSession repairs a set of replicas for a given range on a list of column families. For each of the column family to repair, RepairSession creates a RepairJob that handles the repair of that CF. A given RepairJob has the 2 main phases: 1. Validation phase: the job requests merkle trees from each of the replica involves (RepairJob.sendTreeRequests()) and waits until all trees are received (in validationComplete()). 2. Synchonization phase: once all trees are received, the job compares each tree with all the other using a so-called Differencer (started by submitDifferencers()). If differences there is between 2 trees, the concerned Differencer will start a streaming of the difference between the 2 endpoint concerned (Differencer.performStreamingRepair). The job is done once all its Differencer are done (i.e. have either computed no differences or the streaming they started is done (syncComplete())). A given session will execute the first phase (validation phase) of each of it's job sequentially. In other words, it will start the first job and only start the next one once that first job validation phase is complete. This is done so that the replica only create one merkle tree at a time, which is our way to ensure that such creation starts roughly at the same time on every node (see CASSANDRA-2816). However the synchronization phases are allowed to run concurrently (with each other and with validation phases). A given RepairJob has 2 modes: either sequential or not (isSequential flag). If sequential, it will requests merkle tree creation from each replica in sequence (though in that case we still first send a message to each node to flush and snapshot data so each merkle tree creation is still done on similar data, even if the actual creation is not done simulatneously). If not sequential, all merkle tree are requested in parallel. Similarly, if a job is sequential, it will handle one Differencer at a time, but will handle all of them in parallel otherwise.</div> </li> </ul> </div> <div class="summary"> <ul class="blockList"> <li class="blockList"> <!-- =========== 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>java.util.concurrent.locks.Condition</code></td> <td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/repair/RepairSession.html#differencingDone">differencingDone</a></strong></code>&nbsp;</td> </tr> <tr class="rowColor"> <td class="colFirst"><code>java.util.Set&lt;java.net.InetAddress&gt;</code></td> <td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/repair/RepairSession.html#endpoints">endpoints</a></strong></code>&nbsp;</td> </tr> <tr class="altColor"> <td class="colFirst"><code>boolean</code></td> <td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/repair/RepairSession.html#isSequential">isSequential</a></strong></code>&nbsp;</td> </tr> <tr class="rowColor"> <td class="colFirst"><code>java.lang.String</code></td> <td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/repair/RepairSession.html#keyspace">keyspace</a></strong></code>&nbsp;</td> </tr> <tr class="altColor"> <td class="colFirst"><code>java.util.UUID</code></td> <td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/repair/RepairSession.html#parentRepairSession">parentRepairSession</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/repair/RepairSession.html#range">range</a></strong></code> <div class="block">Range to repair</div> </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/repair/RepairSession.html#RepairSession(java.util.UUID,%20org.apache.cassandra.dht.Range,%20java.lang.String,%20boolean,%20java.util.Set,%20java.lang.String...)">RepairSession</a></strong>(java.util.UUID&nbsp;parentRepairSession, <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, java.lang.String&nbsp;keyspace, boolean&nbsp;isSequential, java.util.Set&lt;java.net.InetAddress&gt;&nbsp;endpoints, java.lang.String...&nbsp;cfnames)</code> <div class="block">Create new repair session.</div> </td> </tr> <tr class="rowColor"> <td class="colOne"><code><strong><a href="../../../../org/apache/cassandra/repair/RepairSession.html#RepairSession(java.util.UUID,%20java.util.UUID,%20org.apache.cassandra.dht.Range,%20java.lang.String,%20boolean,%20java.util.Set,%20java.lang.String[])">RepairSession</a></strong>(java.util.UUID&nbsp;parentRepairSession, java.util.UUID&nbsp;id, <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, java.lang.String&nbsp;keyspace, boolean&nbsp;isSequential, java.util.Set&lt;java.net.InetAddress&gt;&nbsp;endpoints, java.lang.String[]&nbsp;cfnames)</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>void</code></td> <td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/repair/RepairSession.html#beforeChange(java.net.InetAddress,%20org.apache.cassandra.gms.EndpointState,%20org.apache.cassandra.gms.ApplicationState,%20org.apache.cassandra.gms.VersionedValue)">beforeChange</a></strong>(java.net.InetAddress&nbsp;endpoint, <a href="../../../../org/apache/cassandra/gms/EndpointState.html" title="class in org.apache.cassandra.gms">EndpointState</a>&nbsp;currentState, <a href="../../../../org/apache/cassandra/gms/ApplicationState.html" title="enum in org.apache.cassandra.gms">ApplicationState</a>&nbsp;newStateKey, <a href="../../../../org/apache/cassandra/gms/VersionedValue.html" title="class in org.apache.cassandra.gms">VersionedValue</a>&nbsp;newValue)</code>&nbsp;</td> </tr> <tr class="rowColor"> <td class="colFirst"><code>void</code></td> <td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/repair/RepairSession.html#convict(java.net.InetAddress,%20double)">convict</a></strong>(java.net.InetAddress&nbsp;endpoint, double&nbsp;phi)</code> <div class="block">Convict the specified endpoint.</div> </td> </tr> <tr class="altColor"> <td class="colFirst"><code>void</code></td> <td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/repair/RepairSession.html#failedSnapshot()">failedSnapshot</a></strong>()</code> <div class="block">Signal that there was a failure during the snapshot creation process.</div> </td> </tr> <tr class="rowColor"> <td class="colFirst"><code>void</code></td> <td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/repair/RepairSession.html#forceShutdown()">forceShutdown</a></strong>()</code> <div class="block">clear all RepairJobs and terminate this session.</div> </td> </tr> <tr class="altColor"> <td class="colFirst"><code>java.util.UUID</code></td> <td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/repair/RepairSession.html#getId()">getId</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/repair/RepairSession.html#getRange()">getRange</a></strong>()</code>&nbsp;</td> </tr> <tr class="altColor"> <td class="colFirst"><code>void</code></td> <td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/repair/RepairSession.html#onAlive(java.net.InetAddress,%20org.apache.cassandra.gms.EndpointState)">onAlive</a></strong>(java.net.InetAddress&nbsp;endpoint, <a href="../../../../org/apache/cassandra/gms/EndpointState.html" title="class in org.apache.cassandra.gms">EndpointState</a>&nbsp;state)</code>&nbsp;</td> </tr> <tr class="rowColor"> <td class="colFirst"><code>void</code></td> <td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/repair/RepairSession.html#onChange(java.net.InetAddress,%20org.apache.cassandra.gms.ApplicationState,%20org.apache.cassandra.gms.VersionedValue)">onChange</a></strong>(java.net.InetAddress&nbsp;endpoint, <a href="../../../../org/apache/cassandra/gms/ApplicationState.html" title="enum in org.apache.cassandra.gms">ApplicationState</a>&nbsp;state, <a href="../../../../org/apache/cassandra/gms/VersionedValue.html" title="class in org.apache.cassandra.gms">VersionedValue</a>&nbsp;value)</code>&nbsp;</td> </tr> <tr class="altColor"> <td class="colFirst"><code>void</code></td> <td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/repair/RepairSession.html#onDead(java.net.InetAddress,%20org.apache.cassandra.gms.EndpointState)">onDead</a></strong>(java.net.InetAddress&nbsp;endpoint, <a href="../../../../org/apache/cassandra/gms/EndpointState.html" title="class in org.apache.cassandra.gms">EndpointState</a>&nbsp;state)</code>&nbsp;</td> </tr> <tr class="rowColor"> <td class="colFirst"><code>void</code></td> <td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/repair/RepairSession.html#onJoin(java.net.InetAddress,%20org.apache.cassandra.gms.EndpointState)">onJoin</a></strong>(java.net.InetAddress&nbsp;endpoint, <a href="../../../../org/apache/cassandra/gms/EndpointState.html" title="class in org.apache.cassandra.gms">EndpointState</a>&nbsp;epState)</code> <div class="block">Use to inform interested parties about the change in the state for specified endpoint</div> </td> </tr> <tr class="altColor"> <td class="colFirst"><code>void</code></td> <td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/repair/RepairSession.html#onRemove(java.net.InetAddress)">onRemove</a></strong>(java.net.InetAddress&nbsp;endpoint)</code>&nbsp;</td> </tr> <tr class="rowColor"> <td class="colFirst"><code>void</code></td> <td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/repair/RepairSession.html#onRestart(java.net.InetAddress,%20org.apache.cassandra.gms.EndpointState)">onRestart</a></strong>(java.net.InetAddress&nbsp;endpoint, <a href="../../../../org/apache/cassandra/gms/EndpointState.html" title="class in org.apache.cassandra.gms">EndpointState</a>&nbsp;epState)</code> <div class="block">Called whenever a node is restarted.</div> </td> </tr> <tr class="altColor"> <td class="colFirst"><code>void</code></td> <td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/repair/RepairSession.html#runMayThrow()">runMayThrow</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/repair/RepairSession.html#syncComplete(org.apache.cassandra.repair.RepairJobDesc,%20org.apache.cassandra.repair.NodePair,%20boolean)">syncComplete</a></strong>(<a href="../../../../org/apache/cassandra/repair/RepairJobDesc.html" title="class in org.apache.cassandra.repair">RepairJobDesc</a>&nbsp;desc, <a href="../../../../org/apache/cassandra/repair/NodePair.html" title="class in org.apache.cassandra.repair">NodePair</a>&nbsp;nodes, boolean&nbsp;success)</code> <div class="block">Notify this session that sync completed/failed with given <code>NodePair</code>.</div> </td> </tr> <tr class="altColor"> <td class="colFirst"><code>void</code></td> <td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/repair/RepairSession.html#terminate()">terminate</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/repair/RepairSession.html#validationComplete(org.apache.cassandra.repair.RepairJobDesc,%20java.net.InetAddress,%20org.apache.cassandra.utils.MerkleTree)">validationComplete</a></strong>(<a href="../../../../org/apache/cassandra/repair/RepairJobDesc.html" title="class in org.apache.cassandra.repair">RepairJobDesc</a>&nbsp;desc, java.net.InetAddress&nbsp;endpoint, <a href="../../../../org/apache/cassandra/utils/MerkleTree.html" title="class in org.apache.cassandra.utils">MerkleTree</a>&nbsp;tree)</code> <div class="block">Receive merkle tree response or failed response from <code>endpoint</code> for current repair job.</div> </td> </tr> </table> <ul class="blockList"> <li class="blockList"><a name="methods_inherited_from_class_org.apache.cassandra.utils.WrappedRunnable"> <!-- --> </a> <h3>Methods inherited from class&nbsp;org.apache.cassandra.utils.<a href="../../../../org/apache/cassandra/utils/WrappedRunnable.html" title="class in org.apache.cassandra.utils">WrappedRunnable</a></h3> <code><a href="../../../../org/apache/cassandra/utils/WrappedRunnable.html#run()">run</a></code></li> </ul> <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, toString, 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="keyspace"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>keyspace</h4> <pre>public final&nbsp;java.lang.String keyspace</pre> </li> </ul> <a name="isSequential"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>isSequential</h4> <pre>public final&nbsp;boolean isSequential</pre> </li> </ul> <a name="range"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>range</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; range</pre> <div class="block">Range to repair</div> </li> </ul> <a name="endpoints"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>endpoints</h4> <pre>public final&nbsp;java.util.Set&lt;java.net.InetAddress&gt; endpoints</pre> </li> </ul> <a name="differencingDone"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>differencingDone</h4> <pre>public final&nbsp;java.util.concurrent.locks.Condition differencingDone</pre> </li> </ul> <a name="parentRepairSession"> <!-- --> </a> <ul class="blockListLast"> <li class="blockList"> <h4>parentRepairSession</h4> <pre>public final&nbsp;java.util.UUID parentRepairSession</pre> </li> </ul> </li> </ul> <!-- ========= CONSTRUCTOR DETAIL ======== --> <ul class="blockList"> <li class="blockList"><a name="constructor_detail"> <!-- --> </a> <h3>Constructor Detail</h3> <a name="RepairSession(java.util.UUID, org.apache.cassandra.dht.Range, java.lang.String, boolean, java.util.Set, java.lang.String...)"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>RepairSession</h4> <pre>public&nbsp;RepairSession(java.util.UUID&nbsp;parentRepairSession, <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, java.lang.String&nbsp;keyspace, boolean&nbsp;isSequential, java.util.Set&lt;java.net.InetAddress&gt;&nbsp;endpoints, java.lang.String...&nbsp;cfnames)</pre> <div class="block">Create new repair session.</div> <dl><dt><span class="strong">Parameters:</span></dt><dd><code>range</code> - range to repair</dd><dd><code>keyspace</code> - name of keyspace</dd><dd><code>isSequential</code> - true if performing repair on snapshots sequentially</dd><dd><code>endpoints</code> - the data centers that should be part of the repair; null for all DCs</dd><dd><code>cfnames</code> - names of columnfamilies</dd></dl> </li> </ul> <a name="RepairSession(java.util.UUID, java.util.UUID, org.apache.cassandra.dht.Range, java.lang.String, boolean, java.util.Set, java.lang.String[])"> <!-- --> </a> <ul class="blockListLast"> <li class="blockList"> <h4>RepairSession</h4> <pre>public&nbsp;RepairSession(java.util.UUID&nbsp;parentRepairSession, java.util.UUID&nbsp;id, <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, java.lang.String&nbsp;keyspace, boolean&nbsp;isSequential, java.util.Set&lt;java.net.InetAddress&gt;&nbsp;endpoints, java.lang.String[]&nbsp;cfnames)</pre> </li> </ul> </li> </ul> <!-- ============ METHOD DETAIL ========== --> <ul class="blockList"> <li class="blockList"><a name="method_detail"> <!-- --> </a> <h3>Method Detail</h3> <a name="getId()"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>getId</h4> <pre>public&nbsp;java.util.UUID&nbsp;getId()</pre> </li> </ul> <a name="getRange()"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>getRange</h4> <pre>public&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;&nbsp;getRange()</pre> </li> </ul> <a name="validationComplete(org.apache.cassandra.repair.RepairJobDesc, java.net.InetAddress, org.apache.cassandra.utils.MerkleTree)"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>validationComplete</h4> <pre>public&nbsp;void&nbsp;validationComplete(<a href="../../../../org/apache/cassandra/repair/RepairJobDesc.html" title="class in org.apache.cassandra.repair">RepairJobDesc</a>&nbsp;desc, java.net.InetAddress&nbsp;endpoint, <a href="../../../../org/apache/cassandra/utils/MerkleTree.html" title="class in org.apache.cassandra.utils">MerkleTree</a>&nbsp;tree)</pre> <div class="block">Receive merkle tree response or failed response from <code>endpoint</code> for current repair job.</div> <dl><dt><span class="strong">Parameters:</span></dt><dd><code>desc</code> - repair job description</dd><dd><code>endpoint</code> - endpoint that sent merkle tree</dd><dd><code>tree</code> - calculated merkle tree, or null if validation failed</dd></dl> </li> </ul> <a name="syncComplete(org.apache.cassandra.repair.RepairJobDesc, org.apache.cassandra.repair.NodePair, boolean)"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>syncComplete</h4> <pre>public&nbsp;void&nbsp;syncComplete(<a href="../../../../org/apache/cassandra/repair/RepairJobDesc.html" title="class in org.apache.cassandra.repair">RepairJobDesc</a>&nbsp;desc, <a href="../../../../org/apache/cassandra/repair/NodePair.html" title="class in org.apache.cassandra.repair">NodePair</a>&nbsp;nodes, boolean&nbsp;success)</pre> <div class="block">Notify this session that sync completed/failed with given <code>NodePair</code>.</div> <dl><dt><span class="strong">Parameters:</span></dt><dd><code>desc</code> - synced repair job</dd><dd><code>nodes</code> - nodes that completed sync</dd><dd><code>success</code> - true if sync succeeded</dd></dl> </li> </ul> <a name="runMayThrow()"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>runMayThrow</h4> <pre>public&nbsp;void&nbsp;runMayThrow() throws java.lang.Exception</pre> <dl> <dt><strong>Specified by:</strong></dt> <dd><code><a href="../../../../org/apache/cassandra/utils/WrappedRunnable.html#runMayThrow()">runMayThrow</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/cassandra/utils/WrappedRunnable.html" title="class in org.apache.cassandra.utils">WrappedRunnable</a></code></dd> <dt><span class="strong">Throws:</span></dt> <dd><code>java.lang.Exception</code></dd></dl> </li> </ul> <a name="terminate()"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>terminate</h4> <pre>public&nbsp;void&nbsp;terminate()</pre> </li> </ul> <a name="forceShutdown()"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>forceShutdown</h4> <pre>public&nbsp;void&nbsp;forceShutdown()</pre> <div class="block">clear all RepairJobs and terminate this session.</div> </li> </ul> <a name="failedSnapshot()"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>failedSnapshot</h4> <pre>public&nbsp;void&nbsp;failedSnapshot()</pre> <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../org/apache/cassandra/repair/IRepairJobEventListener.html#failedSnapshot()">IRepairJobEventListener</a></code></strong></div> <div class="block">Signal that there was a failure during the snapshot creation process.</div> <dl> <dt><strong>Specified by:</strong></dt> <dd><code><a href="../../../../org/apache/cassandra/repair/IRepairJobEventListener.html#failedSnapshot()">failedSnapshot</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../org/apache/cassandra/repair/IRepairJobEventListener.html" title="interface in org.apache.cassandra.repair">IRepairJobEventListener</a></code></dd> </dl> </li> </ul> <a name="onJoin(java.net.InetAddress, org.apache.cassandra.gms.EndpointState)"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>onJoin</h4> <pre>public&nbsp;void&nbsp;onJoin(java.net.InetAddress&nbsp;endpoint, <a href="../../../../org/apache/cassandra/gms/EndpointState.html" title="class in org.apache.cassandra.gms">EndpointState</a>&nbsp;epState)</pre> <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../org/apache/cassandra/gms/IEndpointStateChangeSubscriber.html#onJoin(java.net.InetAddress,%20org.apache.cassandra.gms.EndpointState)">IEndpointStateChangeSubscriber</a></code></strong></div> <div class="block">Use to inform interested parties about the change in the state for specified endpoint</div> <dl> <dt><strong>Specified by:</strong></dt> <dd><code><a href="../../../../org/apache/cassandra/gms/IEndpointStateChangeSubscriber.html#onJoin(java.net.InetAddress,%20org.apache.cassandra.gms.EndpointState)">onJoin</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../org/apache/cassandra/gms/IEndpointStateChangeSubscriber.html" title="interface in org.apache.cassandra.gms">IEndpointStateChangeSubscriber</a></code></dd> <dt><span class="strong">Parameters:</span></dt><dd><code>endpoint</code> - endpoint for which the state change occurred.</dd><dd><code>epState</code> - state that actually changed for the above endpoint.</dd></dl> </li> </ul> <a name="beforeChange(java.net.InetAddress, org.apache.cassandra.gms.EndpointState, org.apache.cassandra.gms.ApplicationState, org.apache.cassandra.gms.VersionedValue)"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>beforeChange</h4> <pre>public&nbsp;void&nbsp;beforeChange(java.net.InetAddress&nbsp;endpoint, <a href="../../../../org/apache/cassandra/gms/EndpointState.html" title="class in org.apache.cassandra.gms">EndpointState</a>&nbsp;currentState, <a href="../../../../org/apache/cassandra/gms/ApplicationState.html" title="enum in org.apache.cassandra.gms">ApplicationState</a>&nbsp;newStateKey, <a href="../../../../org/apache/cassandra/gms/VersionedValue.html" title="class in org.apache.cassandra.gms">VersionedValue</a>&nbsp;newValue)</pre> <dl> <dt><strong>Specified by:</strong></dt> <dd><code><a href="../../../../org/apache/cassandra/gms/IEndpointStateChangeSubscriber.html#beforeChange(java.net.InetAddress,%20org.apache.cassandra.gms.EndpointState,%20org.apache.cassandra.gms.ApplicationState,%20org.apache.cassandra.gms.VersionedValue)">beforeChange</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../org/apache/cassandra/gms/IEndpointStateChangeSubscriber.html" title="interface in org.apache.cassandra.gms">IEndpointStateChangeSubscriber</a></code></dd> </dl> </li> </ul> <a name="onChange(java.net.InetAddress, org.apache.cassandra.gms.ApplicationState, org.apache.cassandra.gms.VersionedValue)"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>onChange</h4> <pre>public&nbsp;void&nbsp;onChange(java.net.InetAddress&nbsp;endpoint, <a href="../../../../org/apache/cassandra/gms/ApplicationState.html" title="enum in org.apache.cassandra.gms">ApplicationState</a>&nbsp;state, <a href="../../../../org/apache/cassandra/gms/VersionedValue.html" title="class in org.apache.cassandra.gms">VersionedValue</a>&nbsp;value)</pre> <dl> <dt><strong>Specified by:</strong></dt> <dd><code><a href="../../../../org/apache/cassandra/gms/IEndpointStateChangeSubscriber.html#onChange(java.net.InetAddress,%20org.apache.cassandra.gms.ApplicationState,%20org.apache.cassandra.gms.VersionedValue)">onChange</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../org/apache/cassandra/gms/IEndpointStateChangeSubscriber.html" title="interface in org.apache.cassandra.gms">IEndpointStateChangeSubscriber</a></code></dd> </dl> </li> </ul> <a name="onAlive(java.net.InetAddress, org.apache.cassandra.gms.EndpointState)"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>onAlive</h4> <pre>public&nbsp;void&nbsp;onAlive(java.net.InetAddress&nbsp;endpoint, <a href="../../../../org/apache/cassandra/gms/EndpointState.html" title="class in org.apache.cassandra.gms">EndpointState</a>&nbsp;state)</pre> <dl> <dt><strong>Specified by:</strong></dt> <dd><code><a href="../../../../org/apache/cassandra/gms/IEndpointStateChangeSubscriber.html#onAlive(java.net.InetAddress,%20org.apache.cassandra.gms.EndpointState)">onAlive</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../org/apache/cassandra/gms/IEndpointStateChangeSubscriber.html" title="interface in org.apache.cassandra.gms">IEndpointStateChangeSubscriber</a></code></dd> </dl> </li> </ul> <a name="onDead(java.net.InetAddress, org.apache.cassandra.gms.EndpointState)"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>onDead</h4> <pre>public&nbsp;void&nbsp;onDead(java.net.InetAddress&nbsp;endpoint, <a href="../../../../org/apache/cassandra/gms/EndpointState.html" title="class in org.apache.cassandra.gms">EndpointState</a>&nbsp;state)</pre> <dl> <dt><strong>Specified by:</strong></dt> <dd><code><a href="../../../../org/apache/cassandra/gms/IEndpointStateChangeSubscriber.html#onDead(java.net.InetAddress,%20org.apache.cassandra.gms.EndpointState)">onDead</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../org/apache/cassandra/gms/IEndpointStateChangeSubscriber.html" title="interface in org.apache.cassandra.gms">IEndpointStateChangeSubscriber</a></code></dd> </dl> </li> </ul> <a name="onRemove(java.net.InetAddress)"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>onRemove</h4> <pre>public&nbsp;void&nbsp;onRemove(java.net.InetAddress&nbsp;endpoint)</pre> <dl> <dt><strong>Specified by:</strong></dt> <dd><code><a href="../../../../org/apache/cassandra/gms/IEndpointStateChangeSubscriber.html#onRemove(java.net.InetAddress)">onRemove</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../org/apache/cassandra/gms/IEndpointStateChangeSubscriber.html" title="interface in org.apache.cassandra.gms">IEndpointStateChangeSubscriber</a></code></dd> </dl> </li> </ul> <a name="onRestart(java.net.InetAddress, org.apache.cassandra.gms.EndpointState)"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>onRestart</h4> <pre>public&nbsp;void&nbsp;onRestart(java.net.InetAddress&nbsp;endpoint, <a href="../../../../org/apache/cassandra/gms/EndpointState.html" title="class in org.apache.cassandra.gms">EndpointState</a>&nbsp;epState)</pre> <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../org/apache/cassandra/gms/IEndpointStateChangeSubscriber.html#onRestart(java.net.InetAddress,%20org.apache.cassandra.gms.EndpointState)">IEndpointStateChangeSubscriber</a></code></strong></div> <div class="block">Called whenever a node is restarted. Note that there is no guarantee when that happens that the node was previously marked down. It will have only if <code>state.isAlive() == false</code> as <code>state</code> is from before the restarted node is marked up.</div> <dl> <dt><strong>Specified by:</strong></dt> <dd><code><a href="../../../../org/apache/cassandra/gms/IEndpointStateChangeSubscriber.html#onRestart(java.net.InetAddress,%20org.apache.cassandra.gms.EndpointState)">onRestart</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../org/apache/cassandra/gms/IEndpointStateChangeSubscriber.html" title="interface in org.apache.cassandra.gms">IEndpointStateChangeSubscriber</a></code></dd> </dl> </li> </ul> <a name="convict(java.net.InetAddress, double)"> <!-- --> </a> <ul class="blockListLast"> <li class="blockList"> <h4>convict</h4> <pre>public&nbsp;void&nbsp;convict(java.net.InetAddress&nbsp;endpoint, double&nbsp;phi)</pre> <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../org/apache/cassandra/gms/IFailureDetectionEventListener.html#convict(java.net.InetAddress,%20double)">IFailureDetectionEventListener</a></code></strong></div> <div class="block">Convict the specified endpoint.</div> <dl> <dt><strong>Specified by:</strong></dt> <dd><code><a href="../../../../org/apache/cassandra/gms/IFailureDetectionEventListener.html#convict(java.net.InetAddress,%20double)">convict</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../org/apache/cassandra/gms/IFailureDetectionEventListener.html" title="interface in org.apache.cassandra.gms">IFailureDetectionEventListener</a></code></dd> <dt><span class="strong">Parameters:</span></dt><dd><code>endpoint</code> - endpoint to be convicted</dd><dd><code>phi</code> - the value of phi with with ep was convicted</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/RepairSession.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/repair/RepairMessageVerbHandler.html" title="class in org.apache.cassandra.repair"><span class="strong">Prev Class</span></a></li> <li><a href="../../../../org/apache/cassandra/repair/RequestCoordinator.html" title="class in org.apache.cassandra.repair"><span class="strong">Next Class</span></a></li> </ul> <ul class="navList"> <li><a href="../../../../index.html?org/apache/cassandra/repair/RepairSession.html" target="_top">Frames</a></li> <li><a href="RepairSession.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>Nested&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>