cassandra-server
Version:
A thin Javascript wrapper around Apache Cassandra to provide out of the box server support
745 lines (740 loc) • 40 kB
HTML
<!-- 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: </li>
<li>Nested | </li>
<li><a href="#field_summary">Field</a> | </li>
<li><a href="#constructor_summary">Constr</a> | </li>
<li><a href="#method_summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail: </li>
<li><a href="#field_detail">Field</a> | </li>
<li><a href="#constructor_detail">Constr</a> | </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"> </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> </td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>java.util.Set<java.net.InetAddress></code></td>
<td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/repair/RepairSession.html#endpoints">endpoints</a></strong></code> </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> </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> </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> </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><<a href="../../../../org/apache/cassandra/dht/Token.html" title="class in org.apache.cassandra.dht">Token</a>></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"> </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 parentRepairSession,
<a href="../../../../org/apache/cassandra/dht/Range.html" title="class in org.apache.cassandra.dht">Range</a><<a href="../../../../org/apache/cassandra/dht/Token.html" title="class in org.apache.cassandra.dht">Token</a>> range,
java.lang.String keyspace,
boolean isSequential,
java.util.Set<java.net.InetAddress> endpoints,
java.lang.String... 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 parentRepairSession,
java.util.UUID id,
<a href="../../../../org/apache/cassandra/dht/Range.html" title="class in org.apache.cassandra.dht">Range</a><<a href="../../../../org/apache/cassandra/dht/Token.html" title="class in org.apache.cassandra.dht">Token</a>> range,
java.lang.String keyspace,
boolean isSequential,
java.util.Set<java.net.InetAddress> endpoints,
java.lang.String[] cfnames)</code> </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"> </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 endpoint,
<a href="../../../../org/apache/cassandra/gms/EndpointState.html" title="class in org.apache.cassandra.gms">EndpointState</a> currentState,
<a href="../../../../org/apache/cassandra/gms/ApplicationState.html" title="enum in org.apache.cassandra.gms">ApplicationState</a> newStateKey,
<a href="../../../../org/apache/cassandra/gms/VersionedValue.html" title="class in org.apache.cassandra.gms">VersionedValue</a> newValue)</code> </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 endpoint,
double 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> </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><<a href="../../../../org/apache/cassandra/dht/Token.html" title="class in org.apache.cassandra.dht">Token</a>></code></td>
<td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/repair/RepairSession.html#getRange()">getRange</a></strong>()</code> </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 endpoint,
<a href="../../../../org/apache/cassandra/gms/EndpointState.html" title="class in org.apache.cassandra.gms">EndpointState</a> state)</code> </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 endpoint,
<a href="../../../../org/apache/cassandra/gms/ApplicationState.html" title="enum in org.apache.cassandra.gms">ApplicationState</a> state,
<a href="../../../../org/apache/cassandra/gms/VersionedValue.html" title="class in org.apache.cassandra.gms">VersionedValue</a> value)</code> </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 endpoint,
<a href="../../../../org/apache/cassandra/gms/EndpointState.html" title="class in org.apache.cassandra.gms">EndpointState</a> state)</code> </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 endpoint,
<a href="../../../../org/apache/cassandra/gms/EndpointState.html" title="class in org.apache.cassandra.gms">EndpointState</a> 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 endpoint)</code> </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 endpoint,
<a href="../../../../org/apache/cassandra/gms/EndpointState.html" title="class in org.apache.cassandra.gms">EndpointState</a> 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> </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> desc,
<a href="../../../../org/apache/cassandra/repair/NodePair.html" title="class in org.apache.cassandra.repair">NodePair</a> nodes,
boolean 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> </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> desc,
java.net.InetAddress endpoint,
<a href="../../../../org/apache/cassandra/utils/MerkleTree.html" title="class in org.apache.cassandra.utils">MerkleTree</a> 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 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 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 java.lang.String keyspace</pre>
</li>
</ul>
<a name="isSequential">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isSequential</h4>
<pre>public final boolean isSequential</pre>
</li>
</ul>
<a name="range">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>range</h4>
<pre>public final <a href="../../../../org/apache/cassandra/dht/Range.html" title="class in org.apache.cassandra.dht">Range</a><<a href="../../../../org/apache/cassandra/dht/Token.html" title="class in org.apache.cassandra.dht">Token</a>> 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 java.util.Set<java.net.InetAddress> endpoints</pre>
</li>
</ul>
<a name="differencingDone">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>differencingDone</h4>
<pre>public final 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 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 RepairSession(java.util.UUID parentRepairSession,
<a href="../../../../org/apache/cassandra/dht/Range.html" title="class in org.apache.cassandra.dht">Range</a><<a href="../../../../org/apache/cassandra/dht/Token.html" title="class in org.apache.cassandra.dht">Token</a>> range,
java.lang.String keyspace,
boolean isSequential,
java.util.Set<java.net.InetAddress> endpoints,
java.lang.String... 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 RepairSession(java.util.UUID parentRepairSession,
java.util.UUID id,
<a href="../../../../org/apache/cassandra/dht/Range.html" title="class in org.apache.cassandra.dht">Range</a><<a href="../../../../org/apache/cassandra/dht/Token.html" title="class in org.apache.cassandra.dht">Token</a>> range,
java.lang.String keyspace,
boolean isSequential,
java.util.Set<java.net.InetAddress> endpoints,
java.lang.String[] 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 java.util.UUID getId()</pre>
</li>
</ul>
<a name="getRange()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getRange</h4>
<pre>public <a href="../../../../org/apache/cassandra/dht/Range.html" title="class in org.apache.cassandra.dht">Range</a><<a href="../../../../org/apache/cassandra/dht/Token.html" title="class in org.apache.cassandra.dht">Token</a>> 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 void validationComplete(<a href="../../../../org/apache/cassandra/repair/RepairJobDesc.html" title="class in org.apache.cassandra.repair">RepairJobDesc</a> desc,
java.net.InetAddress endpoint,
<a href="../../../../org/apache/cassandra/utils/MerkleTree.html" title="class in org.apache.cassandra.utils">MerkleTree</a> 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 void syncComplete(<a href="../../../../org/apache/cassandra/repair/RepairJobDesc.html" title="class in org.apache.cassandra.repair">RepairJobDesc</a> desc,
<a href="../../../../org/apache/cassandra/repair/NodePair.html" title="class in org.apache.cassandra.repair">NodePair</a> nodes,
boolean 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 void 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> in class <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 void terminate()</pre>
</li>
</ul>
<a name="forceShutdown()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>forceShutdown</h4>
<pre>public void 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 void failedSnapshot()</pre>
<div class="block"><strong>Description copied from interface: <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> in interface <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 void onJoin(java.net.InetAddress endpoint,
<a href="../../../../org/apache/cassandra/gms/EndpointState.html" title="class in org.apache.cassandra.gms">EndpointState</a> epState)</pre>
<div class="block"><strong>Description copied from interface: <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> in interface <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 void beforeChange(java.net.InetAddress endpoint,
<a href="../../../../org/apache/cassandra/gms/EndpointState.html" title="class in org.apache.cassandra.gms">EndpointState</a> currentState,
<a href="../../../../org/apache/cassandra/gms/ApplicationState.html" title="enum in org.apache.cassandra.gms">ApplicationState</a> newStateKey,
<a href="../../../../org/apache/cassandra/gms/VersionedValue.html" title="class in org.apache.cassandra.gms">VersionedValue</a> 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> in interface <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 void onChange(java.net.InetAddress endpoint,
<a href="../../../../org/apache/cassandra/gms/ApplicationState.html" title="enum in org.apache.cassandra.gms">ApplicationState</a> state,
<a href="../../../../org/apache/cassandra/gms/VersionedValue.html" title="class in org.apache.cassandra.gms">VersionedValue</a> 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> in interface <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 void onAlive(java.net.InetAddress endpoint,
<a href="../../../../org/apache/cassandra/gms/EndpointState.html" title="class in org.apache.cassandra.gms">EndpointState</a> 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> in interface <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 void onDead(java.net.InetAddress endpoint,
<a href="../../../../org/apache/cassandra/gms/EndpointState.html" title="class in org.apache.cassandra.gms">EndpointState</a> 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> in interface <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 void onRemove(java.net.InetAddress 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> in interface <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 void onRestart(java.net.InetAddress endpoint,
<a href="../../../../org/apache/cassandra/gms/EndpointState.html" title="class in org.apache.cassandra.gms">EndpointState</a> epState)</pre>
<div class="block"><strong>Description copied from interface: <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> in interface <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 void convict(java.net.InetAddress endpoint,
double phi)</pre>
<div class="block"><strong>Description copied from interface: <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> in interface <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: </li>
<li>Nested | </li>
<li><a href="#field_summary">Field</a> | </li>
<li><a href="#constructor_summary">Constr</a> | </li>
<li><a href="#method_summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail: </li>
<li><a href="#field_detail">Field</a> | </li>
<li><a href="#constructor_detail">Constr</a> | </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 © 2014 The Apache Software Foundation</small></p>
</body>
</html>