cassandra-server
Version:
A thin Javascript wrapper around Apache Cassandra to provide out of the box server support
963 lines (962 loc) • 43.7 kB
HTML
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (version 1.7.0_67) on Sun Sep 07 15:29:29 CEST 2014 -->
<title>Gossiper (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="Gossiper (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/Gossiper.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/gms/GossipDigestSynVerbHandler.html" title="class in org.apache.cassandra.gms"><span class="strong">Prev Class</span></a></li>
<li><a href="../../../../org/apache/cassandra/gms/GossiperMBean.html" title="interface in org.apache.cassandra.gms"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?org/apache/cassandra/gms/Gossiper.html" target="_top">Frames</a></li>
<li><a href="Gossiper.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>Constr | </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>Constr | </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.gms</div>
<h2 title="Class Gossiper" class="title">Class Gossiper</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li>org.apache.cassandra.gms.Gossiper</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd><a href="../../../../org/apache/cassandra/gms/GossiperMBean.html" title="interface in org.apache.cassandra.gms">GossiperMBean</a>, <a href="../../../../org/apache/cassandra/gms/IFailureDetectionEventListener.html" title="interface in org.apache.cassandra.gms">IFailureDetectionEventListener</a></dd>
</dl>
<hr>
<br>
<pre>public class <span class="strong">Gossiper</span>
extends java.lang.Object
implements <a href="../../../../org/apache/cassandra/gms/IFailureDetectionEventListener.html" title="interface in org.apache.cassandra.gms">IFailureDetectionEventListener</a>, <a href="../../../../org/apache/cassandra/gms/GossiperMBean.html" title="interface in org.apache.cassandra.gms">GossiperMBean</a></pre>
<div class="block">This module is responsible for Gossiping information for the local endpoint. This abstraction
maintains the list of live and dead endpoints. Periodically i.e. every 1 second this module
chooses a random node and initiates a round of Gossip with it. A round of Gossip involves 3
rounds of messaging. For instance if node A wants to initiate a round of Gossip with node B
it starts off by sending node B a GossipDigestSynMessage. Node B on receipt of this message
sends node A a GossipDigestAckMessage. On receipt of this message node A sends node B a
GossipDigestAck2Message which completes a round of Gossip. This module as and when it hears one
of the three above mentioned messages updates the Failure Detector with the liveness information.
Upon hearing a GossipShutdownMessage, this module will instantly mark the remote node as down in
the Failure Detector.</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>static long</code></td>
<td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/gms/Gossiper.html#aVeryLongTime">aVeryLongTime</a></strong></code> </td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static <a href="../../../../org/apache/cassandra/gms/Gossiper.html" title="class in org.apache.cassandra.gms">Gossiper</a></code></td>
<td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/gms/Gossiper.html#instance">instance</a></strong></code> </td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static int</code></td>
<td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/gms/Gossiper.html#intervalInMillis">intervalInMillis</a></strong></code> </td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static int</code></td>
<td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/gms/Gossiper.html#QUARANTINE_DELAY">QUARANTINE_DELAY</a></strong></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/gms/Gossiper.html#addExpireTimeForEndpoint(java.net.InetAddress,%20long)">addExpireTimeForEndpoint</a></strong>(java.net.InetAddress endpoint,
long expireTime)</code> </td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/gms/Gossiper.html#addLocalApplicationState(org.apache.cassandra.gms.ApplicationState,%20org.apache.cassandra.gms.VersionedValue)">addLocalApplicationState</a></strong>(<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/gms/Gossiper.html#addSavedEndpoint(java.net.InetAddress)">addSavedEndpoint</a></strong>(java.net.InetAddress ep)</code>
<div class="block">Add an endpoint we knew about previously, but whose state is unknown</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/gms/Gossiper.html#advertiseRemoving(java.net.InetAddress,%20java.util.UUID,%20java.util.UUID)">advertiseRemoving</a></strong>(java.net.InetAddress endpoint,
java.util.UUID hostId,
java.util.UUID localHostId)</code>
<div class="block">This method will begin removing an existing endpoint from the cluster by spoofing its state
This should never be called unless this coordinator has had 'removenode' invoked</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/gms/Gossiper.html#advertiseTokenRemoved(java.net.InetAddress,%20java.util.UUID)">advertiseTokenRemoved</a></strong>(java.net.InetAddress endpoint,
java.util.UUID hostId)</code>
<div class="block">Handles switching the endpoint's state from REMOVING_TOKEN to REMOVED_TOKEN
This should only be called after advertiseRemoving</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/gms/Gossiper.html#compareEndpointStartup(java.net.InetAddress,%20java.net.InetAddress)">compareEndpointStartup</a></strong>(java.net.InetAddress addr1,
java.net.InetAddress addr2)</code>
<div class="block">determine which endpoint started up earlier</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static long</code></td>
<td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/gms/Gossiper.html#computeExpireTime()">computeExpireTime</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/gms/Gossiper.html#convict(java.net.InetAddress,%20double)">convict</a></strong>(java.net.InetAddress endpoint,
double phi)</code>
<div class="block">This method is part of IFailureDetectionEventListener interface.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/gms/Gossiper.html#doShadowRound()">doShadowRound</a></strong>()</code>
<div class="block">Do a single 'shadow' round of gossip, where we do not modify any state
Only used when replacing a node, to get and assume its states</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/gms/Gossiper.html#finishShadowRound()">finishShadowRound</a></strong>()</code> </td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/gms/Gossiper.html#getCurrentGenerationNumber(java.net.InetAddress)">getCurrentGenerationNumber</a></strong>(java.net.InetAddress endpoint)</code> </td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/gms/Gossiper.html#getCurrentGenerationNumber(java.lang.String)">getCurrentGenerationNumber</a></strong>(java.lang.String address)</code> </td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>long</code></td>
<td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/gms/Gossiper.html#getEndpointDowntime(java.net.InetAddress)">getEndpointDowntime</a></strong>(java.net.InetAddress ep)</code> </td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>long</code></td>
<td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/gms/Gossiper.html#getEndpointDowntime(java.lang.String)">getEndpointDowntime</a></strong>(java.lang.String address)</code> </td>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/cassandra/gms/EndpointState.html" title="class in org.apache.cassandra.gms">EndpointState</a></code></td>
<td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/gms/Gossiper.html#getEndpointStateForEndpoint(java.net.InetAddress)">getEndpointStateForEndpoint</a></strong>(java.net.InetAddress ep)</code> </td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>java.util.Set<java.util.Map.Entry<java.net.InetAddress,<a href="../../../../org/apache/cassandra/gms/EndpointState.html" title="class in org.apache.cassandra.gms">EndpointState</a>>></code></td>
<td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/gms/Gossiper.html#getEndpointStates()">getEndpointStates</a></strong>()</code> </td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected long</code></td>
<td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/gms/Gossiper.html#getExpireTimeForEndpoint(java.net.InetAddress)">getExpireTimeForEndpoint</a></strong>(java.net.InetAddress endpoint)</code> </td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>java.util.UUID</code></td>
<td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/gms/Gossiper.html#getHostId(java.net.InetAddress)">getHostId</a></strong>(java.net.InetAddress endpoint)</code> </td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>java.util.Set<java.net.InetAddress></code></td>
<td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/gms/Gossiper.html#getLiveMembers()">getLiveMembers</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/gms/Gossiper.html#getLiveTokenOwners()">getLiveTokenOwners</a></strong>()</code> </td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>java.util.Set<java.net.InetAddress></code></td>
<td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/gms/Gossiper.html#getUnreachableMembers()">getUnreachableMembers</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/gms/Gossiper.html#getUnreachableTokenOwners()">getUnreachableTokenOwners</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/gms/Gossiper.html#initializeNodeUnsafe(java.net.InetAddress,%20java.util.UUID,%20int)">initializeNodeUnsafe</a></strong>(java.net.InetAddress addr,
java.util.UUID uuid,
int generationNbr)</code> </td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/gms/Gossiper.html#injectApplicationState(java.net.InetAddress,%20org.apache.cassandra.gms.ApplicationState,%20org.apache.cassandra.gms.VersionedValue)">injectApplicationState</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>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/gms/Gossiper.html#isDeadState(org.apache.cassandra.gms.EndpointState)">isDeadState</a></strong>(<a href="../../../../org/apache/cassandra/gms/EndpointState.html" title="class in org.apache.cassandra.gms">EndpointState</a> epState)</code> </td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/gms/Gossiper.html#isEnabled()">isEnabled</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/gms/Gossiper.html#isFatClient(java.net.InetAddress)">isFatClient</a></strong>(java.net.InetAddress endpoint)</code> </td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/gms/Gossiper.html#isInShadowRound()">isInShadowRound</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/gms/Gossiper.html#isKnownEndpoint(java.net.InetAddress)">isKnownEndpoint</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/gms/Gossiper.html#maybeInitializeLocalState(int)">maybeInitializeLocalState</a></strong>(int generationNbr)</code> </td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/gms/Gossiper.html#register(org.apache.cassandra.gms.IEndpointStateChangeSubscriber)">register</a></strong>(<a href="../../../../org/apache/cassandra/gms/IEndpointStateChangeSubscriber.html" title="interface in org.apache.cassandra.gms">IEndpointStateChangeSubscriber</a> subscriber)</code>
<div class="block">Register for interesting state changes.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/gms/Gossiper.html#removeEndpoint(java.net.InetAddress)">removeEndpoint</a></strong>(java.net.InetAddress endpoint)</code>
<div class="block">Removes the endpoint from Gossip but retains endpoint state</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/gms/Gossiper.html#replacedEndpoint(java.net.InetAddress)">replacedEndpoint</a></strong>(java.net.InetAddress endpoint)</code>
<div class="block">Remove the Endpoint and evict immediately, to avoid gossiping about this node.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/gms/Gossiper.html#resetEndpointStateMap()">resetEndpointStateMap</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/gms/Gossiper.html#seenAnySeed()">seenAnySeed</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/gms/Gossiper.html#setLastProcessedMessageAt(long)">setLastProcessedMessageAt</a></strong>(long timeInMillis)</code> </td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/gms/Gossiper.html#start(int)">start</a></strong>(int generationNumber)</code> </td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/gms/Gossiper.html#start(int,%20java.util.Map)">start</a></strong>(int generationNbr,
java.util.Map<<a href="../../../../org/apache/cassandra/gms/ApplicationState.html" title="enum in org.apache.cassandra.gms">ApplicationState</a>,<a href="../../../../org/apache/cassandra/gms/VersionedValue.html" title="class in org.apache.cassandra.gms">VersionedValue</a>> preloadLocalStates)</code>
<div class="block">Start the gossiper with the generation number, preloading the map of application states before starting</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/gms/Gossiper.html#stop()">stop</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/gms/Gossiper.html#unregister(org.apache.cassandra.gms.IEndpointStateChangeSubscriber)">unregister</a></strong>(<a href="../../../../org/apache/cassandra/gms/IEndpointStateChangeSubscriber.html" title="interface in org.apache.cassandra.gms">IEndpointStateChangeSubscriber</a> subscriber)</code>
<div class="block">Unregister interest for state changes.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/gms/Gossiper.html#unsafeAssassinateEndpoint(java.lang.String)">unsafeAssassinateEndpoint</a></strong>(java.lang.String address)</code>
<div class="block">Do not call this method unless you know what you are doing.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/gms/Gossiper.html#usesHostId(java.net.InetAddress)">usesHostId</a></strong>(java.net.InetAddress endpoint)</code> </td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/gms/Gossiper.html#usesVnodes(java.net.InetAddress)">usesVnodes</a></strong>(java.net.InetAddress endpoint)</code> </td>
</tr>
</table>
<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="intervalInMillis">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>intervalInMillis</h4>
<pre>public static final int intervalInMillis</pre>
<dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../constant-values.html#org.apache.cassandra.gms.Gossiper.intervalInMillis">Constant Field Values</a></dd></dl>
</li>
</ul>
<a name="QUARANTINE_DELAY">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>QUARANTINE_DELAY</h4>
<pre>public static final int QUARANTINE_DELAY</pre>
</li>
</ul>
<a name="instance">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>instance</h4>
<pre>public static final <a href="../../../../org/apache/cassandra/gms/Gossiper.html" title="class in org.apache.cassandra.gms">Gossiper</a> instance</pre>
</li>
</ul>
<a name="aVeryLongTime">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>aVeryLongTime</h4>
<pre>public static final long aVeryLongTime</pre>
<dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../constant-values.html#org.apache.cassandra.gms.Gossiper.aVeryLongTime">Constant Field Values</a></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="setLastProcessedMessageAt(long)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setLastProcessedMessageAt</h4>
<pre>public void setLastProcessedMessageAt(long timeInMillis)</pre>
</li>
</ul>
<a name="seenAnySeed()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>seenAnySeed</h4>
<pre>public boolean seenAnySeed()</pre>
</li>
</ul>
<a name="register(org.apache.cassandra.gms.IEndpointStateChangeSubscriber)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>register</h4>
<pre>public void register(<a href="../../../../org/apache/cassandra/gms/IEndpointStateChangeSubscriber.html" title="interface in org.apache.cassandra.gms">IEndpointStateChangeSubscriber</a> subscriber)</pre>
<div class="block">Register for interesting state changes.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>subscriber</code> - module which implements the IEndpointStateChangeSubscriber</dd></dl>
</li>
</ul>
<a name="unregister(org.apache.cassandra.gms.IEndpointStateChangeSubscriber)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>unregister</h4>
<pre>public void unregister(<a href="../../../../org/apache/cassandra/gms/IEndpointStateChangeSubscriber.html" title="interface in org.apache.cassandra.gms">IEndpointStateChangeSubscriber</a> subscriber)</pre>
<div class="block">Unregister interest for state changes.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>subscriber</code> - module which implements the IEndpointStateChangeSubscriber</dd></dl>
</li>
</ul>
<a name="getLiveMembers()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getLiveMembers</h4>
<pre>public java.util.Set<java.net.InetAddress> getLiveMembers()</pre>
</li>
</ul>
<a name="getLiveTokenOwners()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getLiveTokenOwners</h4>
<pre>public java.util.Set<java.net.InetAddress> getLiveTokenOwners()</pre>
</li>
</ul>
<a name="getUnreachableMembers()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getUnreachableMembers</h4>
<pre>public java.util.Set<java.net.InetAddress> getUnreachableMembers()</pre>
<dl><dt><span class="strong">Returns:</span></dt><dd>a list of unreachable gossip participants, including fat clients</dd></dl>
</li>
</ul>
<a name="getUnreachableTokenOwners()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getUnreachableTokenOwners</h4>
<pre>public java.util.Set<java.net.InetAddress> getUnreachableTokenOwners()</pre>
<dl><dt><span class="strong">Returns:</span></dt><dd>a list of unreachable token owners</dd></dl>
</li>
</ul>
<a name="getEndpointDowntime(java.net.InetAddress)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getEndpointDowntime</h4>
<pre>public long getEndpointDowntime(java.net.InetAddress ep)</pre>
</li>
</ul>
<a name="convict(java.net.InetAddress, double)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>convict</h4>
<pre>public void convict(java.net.InetAddress endpoint,
double phi)</pre>
<div class="block">This method is part of IFailureDetectionEventListener interface. This is invoked
by the Failure Detector when it convicts an end point.</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> - end point that is convicted.</dd><dd><code>phi</code> - the value of phi with with ep was convicted</dd></dl>
</li>
</ul>
<a name="removeEndpoint(java.net.InetAddress)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>removeEndpoint</h4>
<pre>public void removeEndpoint(java.net.InetAddress endpoint)</pre>
<div class="block">Removes the endpoint from Gossip but retains endpoint state</div>
</li>
</ul>
<a name="replacedEndpoint(java.net.InetAddress)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>replacedEndpoint</h4>
<pre>public void replacedEndpoint(java.net.InetAddress endpoint)</pre>
<div class="block">Remove the Endpoint and evict immediately, to avoid gossiping about this node.
This should only be called when a token is taken over by a new IP address.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>endpoint</code> - The endpoint that has been replaced</dd></dl>
</li>
</ul>
<a name="advertiseRemoving(java.net.InetAddress, java.util.UUID, java.util.UUID)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>advertiseRemoving</h4>
<pre>public void advertiseRemoving(java.net.InetAddress endpoint,
java.util.UUID hostId,
java.util.UUID localHostId)</pre>
<div class="block">This method will begin removing an existing endpoint from the cluster by spoofing its state
This should never be called unless this coordinator has had 'removenode' invoked</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>endpoint</code> - - the endpoint being removed</dd><dd><code>hostId</code> - - the ID of the host being removed</dd><dd><code>localHostId</code> - - my own host ID for replication coordination</dd></dl>
</li>
</ul>
<a name="advertiseTokenRemoved(java.net.InetAddress, java.util.UUID)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>advertiseTokenRemoved</h4>
<pre>public void advertiseTokenRemoved(java.net.InetAddress endpoint,
java.util.UUID hostId)</pre>
<div class="block">Handles switching the endpoint's state from REMOVING_TOKEN to REMOVED_TOKEN
This should only be called after advertiseRemoving</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>endpoint</code> - </dd><dd><code>hostId</code> - </dd></dl>
</li>
</ul>
<a name="unsafeAssassinateEndpoint(java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>unsafeAssassinateEndpoint</h4>
<pre>public void unsafeAssassinateEndpoint(java.lang.String address)
throws java.net.UnknownHostException</pre>
<div class="block">Do not call this method unless you know what you are doing.
It will try extremely hard to obliterate any endpoint from the ring,
even if it does not know about it.
This should only ever be called by human via JMX.</div>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code><a href="../../../../org/apache/cassandra/gms/GossiperMBean.html#unsafeAssassinateEndpoint(java.lang.String)">unsafeAssassinateEndpoint</a></code> in interface <code><a href="../../../../org/apache/cassandra/gms/GossiperMBean.html" title="interface in org.apache.cassandra.gms">GossiperMBean</a></code></dd>
<dt><span class="strong">Parameters:</span></dt><dd><code>address</code> - </dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code>java.net.UnknownHostException</code></dd></dl>
</li>
</ul>
<a name="isKnownEndpoint(java.net.InetAddress)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isKnownEndpoint</h4>
<pre>public boolean isKnownEndpoint(java.net.InetAddress endpoint)</pre>
</li>
</ul>
<a name="getCurrentGenerationNumber(java.net.InetAddress)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getCurrentGenerationNumber</h4>
<pre>public int getCurrentGenerationNumber(java.net.InetAddress endpoint)</pre>
</li>
</ul>
<a name="isFatClient(java.net.InetAddress)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isFatClient</h4>
<pre>public boolean isFatClient(java.net.InetAddress endpoint)</pre>
</li>
</ul>
<a name="getExpireTimeForEndpoint(java.net.InetAddress)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getExpireTimeForEndpoint</h4>
<pre>protected long getExpireTimeForEndpoint(java.net.InetAddress endpoint)</pre>
</li>
</ul>
<a name="getEndpointStateForEndpoint(java.net.InetAddress)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getEndpointStateForEndpoint</h4>
<pre>public <a href="../../../../org/apache/cassandra/gms/EndpointState.html" title="class in org.apache.cassandra.gms">EndpointState</a> getEndpointStateForEndpoint(java.net.InetAddress ep)</pre>
</li>
</ul>
<a name="resetEndpointStateMap()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>resetEndpointStateMap</h4>
<pre>public void resetEndpointStateMap()</pre>
</li>
</ul>
<a name="getEndpointStates()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getEndpointStates</h4>
<pre>public java.util.Set<java.util.Map.Entry<java.net.InetAddress,<a href="../../../../org/apache/cassandra/gms/EndpointState.html" title="class in org.apache.cassandra.gms">EndpointState</a>>> getEndpointStates()</pre>
</li>
</ul>
<a name="usesHostId(java.net.InetAddress)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>usesHostId</h4>
<pre>public boolean usesHostId(java.net.InetAddress endpoint)</pre>
</li>
</ul>
<a name="usesVnodes(java.net.InetAddress)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>usesVnodes</h4>
<pre>public boolean usesVnodes(java.net.InetAddress endpoint)</pre>
</li>
</ul>
<a name="getHostId(java.net.InetAddress)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getHostId</h4>
<pre>public java.util.UUID getHostId(java.net.InetAddress endpoint)</pre>
</li>
</ul>
<a name="compareEndpointStartup(java.net.InetAddress, java.net.InetAddress)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>compareEndpointStartup</h4>
<pre>public int compareEndpointStartup(java.net.InetAddress addr1,
java.net.InetAddress addr2)</pre>
<div class="block">determine which endpoint started up earlier</div>
</li>
</ul>
<a name="isDeadState(org.apache.cassandra.gms.EndpointState)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isDeadState</h4>
<pre>public boolean isDeadState(<a href="../../../../org/apache/cassandra/gms/EndpointState.html" title="class in org.apache.cassandra.gms">EndpointState</a> epState)</pre>
</li>
</ul>
<a name="start(int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>start</h4>
<pre>public void start(int generationNumber)</pre>
</li>
</ul>
<a name="start(int, java.util.Map)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>start</h4>
<pre>public void start(int generationNbr,
java.util.Map<<a href="../../../../org/apache/cassandra/gms/ApplicationState.html" title="enum in org.apache.cassandra.gms">ApplicationState</a>,<a href="../../../../org/apache/cassandra/gms/VersionedValue.html" title="class in org.apache.cassandra.gms">VersionedValue</a>> preloadLocalStates)</pre>
<div class="block">Start the gossiper with the generation number, preloading the map of application states before starting</div>
</li>
</ul>
<a name="doShadowRound()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>doShadowRound</h4>
<pre>public void doShadowRound()</pre>
<div class="block">Do a single 'shadow' round of gossip, where we do not modify any state
Only used when replacing a node, to get and assume its states</div>
</li>
</ul>
<a name="maybeInitializeLocalState(int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>maybeInitializeLocalState</h4>
<pre>public void maybeInitializeLocalState(int generationNbr)</pre>
</li>
</ul>
<a name="addSavedEndpoint(java.net.InetAddress)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addSavedEndpoint</h4>
<pre>public void addSavedEndpoint(java.net.InetAddress ep)</pre>
<div class="block">Add an endpoint we knew about previously, but whose state is unknown</div>
</li>
</ul>
<a name="addLocalApplicationState(org.apache.cassandra.gms.ApplicationState, org.apache.cassandra.gms.VersionedValue)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addLocalApplicationState</h4>
<pre>public void addLocalApplicationState(<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>
</li>
</ul>
<a name="stop()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>stop</h4>
<pre>public void stop()</pre>
</li>
</ul>
<a name="isEnabled()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isEnabled</h4>
<pre>public boolean isEnabled()</pre>
</li>
</ul>
<a name="finishShadowRound()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>finishShadowRound</h4>
<pre>protected void finishShadowRound()</pre>
</li>
</ul>
<a name="isInShadowRound()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isInShadowRound</h4>
<pre>protected boolean isInShadowRound()</pre>
</li>
</ul>
<a name="initializeNodeUnsafe(java.net.InetAddress, java.util.UUID, int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>initializeNodeUnsafe</h4>
<pre>public void initializeNodeUnsafe(java.net.InetAddress addr,
java.util.UUID uuid,
int generationNbr)</pre>
</li>
</ul>
<a name="injectApplicationState(java.net.InetAddress, org.apache.cassandra.gms.ApplicationState, org.apache.cassandra.gms.VersionedValue)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>injectApplicationState</h4>
<pre>public void injectApplicationState(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>
</li>
</ul>
<a name="getEndpointDowntime(java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getEndpointDowntime</h4>
<pre>public long getEndpointDowntime(java.lang.String address)
throws java.net.UnknownHostException</pre>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code><a href="../../../../org/apache/cassandra/gms/GossiperMBean.html#getEndpointDowntime(java.lang.String)">getEndpointDowntime</a></code> in interface <code><a href="../../../../org/apache/cassandra/gms/GossiperMBean.html" title="interface in org.apache.cassandra.gms">GossiperMBean</a></code></dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code>java.net.UnknownHostException</code></dd></dl>
</li>
</ul>
<a name="getCurrentGenerationNumber(java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getCurrentGenerationNumber</h4>
<pre>public int getCurrentGenerationNumber(java.lang.String address)
throws java.net.UnknownHostException</pre>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code><a href="../../../../org/apache/cassandra/gms/GossiperMBean.html#getCurrentGenerationNumber(java.lang.String)">getCurrentGenerationNumber</a></code> in interface <code><a href="../../../../org/apache/cassandra/gms/GossiperMBean.html" title="interface in org.apache.cassandra.gms">GossiperMBean</a></code></dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code>java.net.UnknownHostException</code></dd></dl>
</li>
</ul>
<a name="addExpireTimeForEndpoint(java.net.InetAddress, long)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addExpireTimeForEndpoint</h4>
<pre>public void addExpireTimeForEndpoint(java.net.InetAddress endpoint,
long expireTime)</pre>
</li>
</ul>
<a name="computeExpireTime()">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>computeExpireTime</h4>
<pre>public static long computeExpireTime()</pre>
</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/Gossiper.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/gms/GossipDigestSynVerbHandler.html" title="class in org.apache.cassandra.gms"><span class="strong">Prev Class</span></a></li>
<li><a href="../../../../org/apache/cassandra/gms/GossiperMBean.html" title="interface in org.apache.cassandra.gms"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?org/apache/cassandra/gms/Gossiper.html" target="_top">Frames</a></li>
<li><a href="Gossiper.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>Constr | </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>Constr | </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>