UNPKG

cassandra-server

Version:

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

914 lines (903 loc) 51.9 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:32 CEST 2014 --> <title>StreamSession (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="StreamSession (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/StreamSession.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/streaming/StreamResultFuture.html" title="class in org.apache.cassandra.streaming"><span class="strong">Prev Class</span></a></li> <li><a href="../../../../org/apache/cassandra/streaming/StreamSession.SSTableStreamingSections.html" title="class in org.apache.cassandra.streaming"><span class="strong">Next Class</span></a></li> </ul> <ul class="navList"> <li><a href="../../../../index.html?org/apache/cassandra/streaming/StreamSession.html" target="_top">Frames</a></li> <li><a href="StreamSession.html" target="_top">No Frames</a></li> </ul> <ul class="navList" id="allclasses_navbar_top"> <li><a href="../../../../allclasses-noframe.html">All Classes</a></li> </ul> <div> <script type="text/javascript"><!-- allClassesLink = document.getElementById("allclasses_navbar_top"); if(window==top) { allClassesLink.style.display = "block"; } else { allClassesLink.style.display = "none"; } //--> </script> </div> <div> <ul class="subNavList"> <li>Summary:&nbsp;</li> <li><a href="#nested_class_summary">Nested</a>&nbsp;|&nbsp;</li> <li><a href="#field_summary">Field</a>&nbsp;|&nbsp;</li> <li><a href="#constructor_summary">Constr</a>&nbsp;|&nbsp;</li> <li><a href="#method_summary">Method</a></li> </ul> <ul class="subNavList"> <li>Detail:&nbsp;</li> <li><a href="#field_detail">Field</a>&nbsp;|&nbsp;</li> <li><a href="#constructor_detail">Constr</a>&nbsp;|&nbsp;</li> <li><a href="#method_detail">Method</a></li> </ul> </div> <a name="skip-navbar_top"> <!-- --> </a></div> <!-- ========= END OF TOP NAVBAR ========= --> <!-- ======== START OF CLASS DATA ======== --> <div class="header"> <div class="subTitle">org.apache.cassandra.streaming</div> <h2 title="Class StreamSession" class="title">Class StreamSession</h2> </div> <div class="contentContainer"> <ul class="inheritance"> <li>java.lang.Object</li> <li> <ul class="inheritance"> <li>org.apache.cassandra.streaming.StreamSession</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/IEndpointStateChangeSubscriber.html" title="interface in org.apache.cassandra.gms">IEndpointStateChangeSubscriber</a></dd> </dl> <hr> <br> <pre>public class <span class="strong">StreamSession</span> extends java.lang.Object implements <a href="../../../../org/apache/cassandra/gms/IEndpointStateChangeSubscriber.html" title="interface in org.apache.cassandra.gms">IEndpointStateChangeSubscriber</a></pre> <div class="block">Handles the streaming a one or more section of one of more sstables to and from a specific remote node. Both this node and the remote one will create a similar symmetrical StreamSession. A streaming session has the following life-cycle: 1. Connections Initialization (a) A node (the initiator in the following) create a new StreamSession, initialize it (init()) and then start it (start()). Start will create a <a href="../../../../org/apache/cassandra/streaming/ConnectionHandler.html" title="class in org.apache.cassandra.streaming"><code>ConnectionHandler</code></a> that will create two connections to the remote node (the follower in the following) with whom to stream and send a StreamInit message. The first connection will be the incoming connection for the initiator, and the second connection will be the outgoing. (b) Upon reception of that StreamInit message, the follower creates its own StreamSession, initialize it if it still does not exist, and attach connecting socket to its ConnectionHandler according to StreamInit message's isForOutgoing flag. (d) When the both incoming and outgoing connections are established, StreamSession calls StreamSession#onInitializationComplete method to start the streaming prepare phase (StreamResultFuture.startStreaming()). 2. Streaming preparation phase (a) This phase is started when the initiator onInitializationComplete() method is called. This method sends a PrepareMessage that includes what files/sections this node will stream to the follower (stored in a StreamTranferTask, each column family has it's own transfer task) and what the follower needs to stream back (StreamReceiveTask, same as above). If the initiator has nothing to receive from the follower, it goes directly to its Streaming phase. Otherwise, it waits for the follower PrepareMessage. (b) Upon reception of the PrepareMessage, the follower records which files/sections it will receive and send back its own PrepareMessage with a summary of the files/sections that will be sent to the initiator (prepare()). After having sent that message, the follower goes to its Streamning phase. (c) When the initiator receives the follower PrepareMessage, it records which files/sections it will receive and then goes to his own Streaming phase. 3. Streaming phase (a) The streaming phase is started by each node (the sender in the follower, but note that each side of the StreamSession may be sender for some of the files) involved by calling startStreamingFiles(). This will sequentially send a FileMessage for each file of each SteamTransferTask. Each FileMessage consists of a FileMessageHeader that indicates which file is coming and then start streaming the content for that file (StreamWriter in FileMessage.serialize()). When a file is fully sent, the fileSent() method is called for that file. If all the files for a StreamTransferTask are sent (StreamTransferTask.complete()), the task is marked complete (taskCompleted()). (b) On the receiving side, a SSTable will be written for the incoming file (StreamReader in FileMessage.deserialize()) and once the FileMessage is fully received, the file will be marked as complete (received()). When all files for the StreamReceiveTask have been received, the sstables are added to the CFS (and 2ndary index are built, StreamReceiveTask.complete()) and the task is marked complete (taskCompleted()) (b) If during the streaming of a particular file an I/O error occurs on the receiving end of a stream (FileMessage.deserialize), the node will retry the file (up to DatabaseDescriptor.getMaxStreamingRetries()) by sending a RetryMessage to the sender. On receiving a RetryMessage, the sender simply issue a new FileMessage for that file. (c) When all transfer and receive tasks for a session are complete, the move to the Completion phase (maybeCompleted()). 4. Completion phase (a) When a node has finished all transfer and receive task, it enter the completion phase (maybeCompleted()). If it had already received a CompleteMessage from the other side (it is in the WAIT_COMPLETE state), that session is done is is closed (closeSession()). Otherwise, the node switch to the WAIT_COMPLETE state and send a CompleteMessage to the other side.</div> </li> </ul> </div> <div class="summary"> <ul class="blockList"> <li class="blockList"> <!-- ======== NESTED CLASS SUMMARY ======== --> <ul class="blockList"> <li class="blockList"><a name="nested_class_summary"> <!-- --> </a> <h3>Nested Class Summary</h3> <table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Nested Class Summary table, listing nested classes, and an explanation"> <caption><span>Nested Classes</span><span class="tabEnd">&nbsp;</span></caption> <tr> <th class="colFirst" scope="col">Modifier and Type</th> <th class="colLast" scope="col">Class and Description</th> </tr> <tr class="altColor"> <td class="colFirst"><code>static class&nbsp;</code></td> <td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/streaming/StreamSession.SSTableStreamingSections.html" title="class in org.apache.cassandra.streaming">StreamSession.SSTableStreamingSections</a></strong></code>&nbsp;</td> </tr> <tr class="rowColor"> <td class="colFirst"><code>static class&nbsp;</code></td> <td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/streaming/StreamSession.State.html" title="enum in org.apache.cassandra.streaming">StreamSession.State</a></strong></code>&nbsp;</td> </tr> </table> </li> </ul> <!-- =========== FIELD SUMMARY =========== --> <ul class="blockList"> <li class="blockList"><a name="field_summary"> <!-- --> </a> <h3>Field Summary</h3> <table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation"> <caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption> <tr> <th class="colFirst" scope="col">Modifier and Type</th> <th class="colLast" scope="col">Field and Description</th> </tr> <tr class="altColor"> <td class="colFirst"><code><a href="../../../../org/apache/cassandra/streaming/ConnectionHandler.html" title="class in org.apache.cassandra.streaming">ConnectionHandler</a></code></td> <td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/streaming/StreamSession.html#handler">handler</a></strong></code>&nbsp;</td> </tr> <tr class="rowColor"> <td class="colFirst"><code>java.net.InetAddress</code></td> <td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/streaming/StreamSession.html#peer">peer</a></strong></code>&nbsp;</td> </tr> </table> </li> </ul> <!-- ======== CONSTRUCTOR SUMMARY ======== --> <ul class="blockList"> <li class="blockList"><a name="constructor_summary"> <!-- --> </a> <h3>Constructor Summary</h3> <table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation"> <caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption> <tr> <th class="colOne" scope="col">Constructor and Description</th> </tr> <tr class="altColor"> <td class="colOne"><code><strong><a href="../../../../org/apache/cassandra/streaming/StreamSession.html#StreamSession(java.net.InetAddress,%20int)">StreamSession</a></strong>(java.net.InetAddress&nbsp;peer, int&nbsp;index)</code> <div class="block">Create new streaming session with the peer.</div> </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/streaming/StreamSession.html#addStreamRequest(java.lang.String,%20java.util.Collection,%20java.util.Collection,%20long)">addStreamRequest</a></strong>(java.lang.String&nbsp;keyspace, java.util.Collection&lt;<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;&gt;&nbsp;ranges, java.util.Collection&lt;java.lang.String&gt;&nbsp;columnFamilies, long&nbsp;repairedAt)</code> <div class="block">Request data fetch task to this session.</div> </td> </tr> <tr class="rowColor"> <td class="colFirst"><code>void</code></td> <td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/streaming/StreamSession.html#addTransferFiles(java.util.Collection)">addTransferFiles</a></strong>(java.util.Collection&lt;<a href="../../../../org/apache/cassandra/streaming/StreamSession.SSTableStreamingSections.html" title="class in org.apache.cassandra.streaming">StreamSession.SSTableStreamingSections</a>&gt;&nbsp;sstableDetails)</code>&nbsp;</td> </tr> <tr class="altColor"> <td class="colFirst"><code>void</code></td> <td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/streaming/StreamSession.html#addTransferRanges(java.lang.String,%20java.util.Collection,%20java.util.Collection,%20boolean,%20long)">addTransferRanges</a></strong>(java.lang.String&nbsp;keyspace, java.util.Collection&lt;<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;&gt;&nbsp;ranges, java.util.Collection&lt;java.lang.String&gt;&nbsp;columnFamilies, boolean&nbsp;flushTables, long&nbsp;repairedAt)</code> <div class="block">Set up transfer for specific keyspace/ranges/CFs Used in repair - a streamed sstable in repair will be marked with the given repairedAt time</div> </td> </tr> <tr class="rowColor"> <td class="colFirst"><code>void</code></td> <td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/streaming/StreamSession.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="altColor"> <td class="colFirst"><code>void</code></td> <td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/streaming/StreamSession.html#complete()">complete</a></strong>()</code> <div class="block">Check if session is completed on receiving <code>StreamMessage.Type.COMPLETE</code> message.</div> </td> </tr> <tr class="rowColor"> <td class="colFirst"><code>java.lang.String</code></td> <td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/streaming/StreamSession.html#description()">description</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/streaming/StreamSession.html#doRetry(org.apache.cassandra.streaming.messages.FileMessageHeader,%20java.lang.Throwable)">doRetry</a></strong>(<a href="../../../../org/apache/cassandra/streaming/messages/FileMessageHeader.html" title="class in org.apache.cassandra.streaming.messages">FileMessageHeader</a>&nbsp;header, java.lang.Throwable&nbsp;e)</code>&nbsp;</td> </tr> <tr class="rowColor"> <td class="colFirst"><code>void</code></td> <td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/streaming/StreamSession.html#fileSent(org.apache.cassandra.streaming.messages.FileMessageHeader)">fileSent</a></strong>(<a href="../../../../org/apache/cassandra/streaming/messages/FileMessageHeader.html" title="class in org.apache.cassandra.streaming.messages">FileMessageHeader</a>&nbsp;header)</code> <div class="block">Call back after sending FileMessageHeader.</div> </td> </tr> <tr class="altColor"> <td class="colFirst"><code><a href="../../../../org/apache/cassandra/streaming/SessionInfo.html" title="class in org.apache.cassandra.streaming">SessionInfo</a></code></td> <td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/streaming/StreamSession.html#getSessionInfo()">getSessionInfo</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/streaming/StreamSession.html#init(org.apache.cassandra.streaming.StreamResultFuture)">init</a></strong>(<a href="../../../../org/apache/cassandra/streaming/StreamResultFuture.html" title="class in org.apache.cassandra.streaming">StreamResultFuture</a>&nbsp;streamResult)</code> <div class="block">Bind this session to report to specific <a href="../../../../org/apache/cassandra/streaming/StreamResultFuture.html" title="class in org.apache.cassandra.streaming"><code>StreamResultFuture</code></a> and perform pre-streaming initialization.</div> </td> </tr> <tr class="altColor"> <td class="colFirst"><code>boolean</code></td> <td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/streaming/StreamSession.html#isSuccess()">isSuccess</a></strong>()</code> <div class="block">Return if this session completed successfully.</div> </td> </tr> <tr class="rowColor"> <td class="colFirst"><code>void</code></td> <td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/streaming/StreamSession.html#messageReceived(org.apache.cassandra.streaming.messages.StreamMessage)">messageReceived</a></strong>(<a href="../../../../org/apache/cassandra/streaming/messages/StreamMessage.html" title="class in org.apache.cassandra.streaming.messages">StreamMessage</a>&nbsp;message)</code>&nbsp;</td> </tr> <tr class="altColor"> <td class="colFirst"><code>void</code></td> <td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/streaming/StreamSession.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/streaming/StreamSession.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/streaming/StreamSession.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/streaming/StreamSession.html#onError(java.lang.Throwable)">onError</a></strong>(java.lang.Throwable&nbsp;e)</code> <div class="block">l Call back for handling exception during streaming.</div> </td> </tr> <tr class="altColor"> <td class="colFirst"><code>void</code></td> <td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/streaming/StreamSession.html#onInitializationComplete()">onInitializationComplete</a></strong>()</code> <div class="block">Call back when connection initialization is complete to start the prepare phase.</div> </td> </tr> <tr class="rowColor"> <td class="colFirst"><code>void</code></td> <td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/streaming/StreamSession.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/streaming/StreamSession.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/streaming/StreamSession.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>java.util.UUID</code></td> <td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/streaming/StreamSession.html#planId()">planId</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/streaming/StreamSession.html#prepare(java.util.Collection,%20java.util.Collection)">prepare</a></strong>(java.util.Collection&lt;<a href="../../../../org/apache/cassandra/streaming/StreamRequest.html" title="class in org.apache.cassandra.streaming">StreamRequest</a>&gt;&nbsp;requests, java.util.Collection&lt;<a href="../../../../org/apache/cassandra/streaming/StreamSummary.html" title="class in org.apache.cassandra.streaming">StreamSummary</a>&gt;&nbsp;summaries)</code> <div class="block">Prepare this session for sending/receiving files.</div> </td> </tr> <tr class="altColor"> <td class="colFirst"><code>void</code></td> <td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/streaming/StreamSession.html#progress(org.apache.cassandra.io.sstable.Descriptor,%20org.apache.cassandra.streaming.ProgressInfo.Direction,%20long,%20long)">progress</a></strong>(<a href="../../../../org/apache/cassandra/io/sstable/Descriptor.html" title="class in org.apache.cassandra.io.sstable">Descriptor</a>&nbsp;desc, <a href="../../../../org/apache/cassandra/streaming/ProgressInfo.Direction.html" title="enum in org.apache.cassandra.streaming">ProgressInfo.Direction</a>&nbsp;direction, long&nbsp;bytes, long&nbsp;total)</code>&nbsp;</td> </tr> <tr class="rowColor"> <td class="colFirst"><code>void</code></td> <td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/streaming/StreamSession.html#receive(org.apache.cassandra.streaming.messages.IncomingFileMessage)">receive</a></strong>(<a href="../../../../org/apache/cassandra/streaming/messages/IncomingFileMessage.html" title="class in org.apache.cassandra.streaming.messages">IncomingFileMessage</a>&nbsp;message)</code> <div class="block">Call back after receiving FileMessageHeader.</div> </td> </tr> <tr class="altColor"> <td class="colFirst"><code>void</code></td> <td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/streaming/StreamSession.html#received(java.util.UUID,%20int)">received</a></strong>(java.util.UUID&nbsp;cfId, int&nbsp;sequenceNumber)</code>&nbsp;</td> </tr> <tr class="rowColor"> <td class="colFirst"><code>void</code></td> <td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/streaming/StreamSession.html#retry(java.util.UUID,%20int)">retry</a></strong>(java.util.UUID&nbsp;cfId, int&nbsp;sequenceNumber)</code> <div class="block">Call back on receiving <code>StreamMessage.Type.RETRY</code> message.</div> </td> </tr> <tr class="altColor"> <td class="colFirst"><code>void</code></td> <td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/streaming/StreamSession.html#sessionFailed()">sessionFailed</a></strong>()</code> <div class="block">Call back on receiving <code>StreamMessage.Type.SESSION_FAILED</code> message.</div> </td> </tr> <tr class="rowColor"> <td class="colFirst"><code>int</code></td> <td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/streaming/StreamSession.html#sessionIndex()">sessionIndex</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/streaming/StreamSession.html#start()">start</a></strong>()</code>&nbsp;</td> </tr> <tr class="rowColor"> <td class="colFirst"><code><a href="../../../../org/apache/cassandra/streaming/StreamSession.State.html" title="enum in org.apache.cassandra.streaming">StreamSession.State</a></code></td> <td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/streaming/StreamSession.html#state()">state</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/streaming/StreamSession.html#state(org.apache.cassandra.streaming.StreamSession.State)">state</a></strong>(<a href="../../../../org/apache/cassandra/streaming/StreamSession.State.html" title="enum in org.apache.cassandra.streaming">StreamSession.State</a>&nbsp;newState)</code> <div class="block">Set current state to <code>newState</code>.</div> </td> </tr> <tr class="rowColor"> <td class="colFirst"><code>void</code></td> <td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/streaming/StreamSession.html#taskCompleted(org.apache.cassandra.streaming.StreamReceiveTask)">taskCompleted</a></strong>(<a href="../../../../org/apache/cassandra/streaming/StreamReceiveTask.html" title="class in org.apache.cassandra.streaming">StreamReceiveTask</a>&nbsp;completedTask)</code>&nbsp;</td> </tr> <tr class="altColor"> <td class="colFirst"><code>void</code></td> <td class="colLast"><code><strong><a href="../../../../org/apache/cassandra/streaming/StreamSession.html#taskCompleted(org.apache.cassandra.streaming.StreamTransferTask)">taskCompleted</a></strong>(<a href="../../../../org/apache/cassandra/streaming/StreamTransferTask.html" title="class in org.apache.cassandra.streaming">StreamTransferTask</a>&nbsp;completedTask)</code>&nbsp;</td> </tr> </table> <ul class="blockList"> <li class="blockList"><a name="methods_inherited_from_class_java.lang.Object"> <!-- --> </a> <h3>Methods inherited from class&nbsp;java.lang.Object</h3> <code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, 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="peer"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>peer</h4> <pre>public final&nbsp;java.net.InetAddress peer</pre> </li> </ul> <a name="handler"> <!-- --> </a> <ul class="blockListLast"> <li class="blockList"> <h4>handler</h4> <pre>public final&nbsp;<a href="../../../../org/apache/cassandra/streaming/ConnectionHandler.html" title="class in org.apache.cassandra.streaming">ConnectionHandler</a> handler</pre> </li> </ul> </li> </ul> <!-- ========= CONSTRUCTOR DETAIL ======== --> <ul class="blockList"> <li class="blockList"><a name="constructor_detail"> <!-- --> </a> <h3>Constructor Detail</h3> <a name="StreamSession(java.net.InetAddress, int)"> <!-- --> </a> <ul class="blockListLast"> <li class="blockList"> <h4>StreamSession</h4> <pre>public&nbsp;StreamSession(java.net.InetAddress&nbsp;peer, int&nbsp;index)</pre> <div class="block">Create new streaming session with the peer.</div> <dl><dt><span class="strong">Parameters:</span></dt><dd><code>peer</code> - Address of streaming peer</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="planId()"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>planId</h4> <pre>public&nbsp;java.util.UUID&nbsp;planId()</pre> </li> </ul> <a name="sessionIndex()"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>sessionIndex</h4> <pre>public&nbsp;int&nbsp;sessionIndex()</pre> </li> </ul> <a name="description()"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>description</h4> <pre>public&nbsp;java.lang.String&nbsp;description()</pre> </li> </ul> <a name="init(org.apache.cassandra.streaming.StreamResultFuture)"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>init</h4> <pre>public&nbsp;void&nbsp;init(<a href="../../../../org/apache/cassandra/streaming/StreamResultFuture.html" title="class in org.apache.cassandra.streaming">StreamResultFuture</a>&nbsp;streamResult)</pre> <div class="block">Bind this session to report to specific <a href="../../../../org/apache/cassandra/streaming/StreamResultFuture.html" title="class in org.apache.cassandra.streaming"><code>StreamResultFuture</code></a> and perform pre-streaming initialization.</div> <dl><dt><span class="strong">Parameters:</span></dt><dd><code>streamResult</code> - result to report to</dd></dl> </li> </ul> <a name="start()"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>start</h4> <pre>public&nbsp;void&nbsp;start()</pre> </li> </ul> <a name="addStreamRequest(java.lang.String, java.util.Collection, java.util.Collection, long)"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>addStreamRequest</h4> <pre>public&nbsp;void&nbsp;addStreamRequest(java.lang.String&nbsp;keyspace, java.util.Collection&lt;<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;&gt;&nbsp;ranges, java.util.Collection&lt;java.lang.String&gt;&nbsp;columnFamilies, long&nbsp;repairedAt)</pre> <div class="block">Request data fetch task to this session.</div> <dl><dt><span class="strong">Parameters:</span></dt><dd><code>keyspace</code> - Requesting keyspace</dd><dd><code>ranges</code> - Ranges to retrieve data</dd><dd><code>columnFamilies</code> - ColumnFamily names. Can be empty if requesting all CF under the keyspace.</dd></dl> </li> </ul> <a name="addTransferRanges(java.lang.String, java.util.Collection, java.util.Collection, boolean, long)"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>addTransferRanges</h4> <pre>public&nbsp;void&nbsp;addTransferRanges(java.lang.String&nbsp;keyspace, java.util.Collection&lt;<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;&gt;&nbsp;ranges, java.util.Collection&lt;java.lang.String&gt;&nbsp;columnFamilies, boolean&nbsp;flushTables, long&nbsp;repairedAt)</pre> <div class="block">Set up transfer for specific keyspace/ranges/CFs Used in repair - a streamed sstable in repair will be marked with the given repairedAt time</div> <dl><dt><span class="strong">Parameters:</span></dt><dd><code>keyspace</code> - Transfer keyspace</dd><dd><code>ranges</code> - Transfer ranges</dd><dd><code>columnFamilies</code> - Transfer ColumnFamilies</dd><dd><code>flushTables</code> - flush tables?</dd><dd><code>repairedAt</code> - the time the repair started.</dd></dl> </li> </ul> <a name="addTransferFiles(java.util.Collection)"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>addTransferFiles</h4> <pre>public&nbsp;void&nbsp;addTransferFiles(java.util.Collection&lt;<a href="../../../../org/apache/cassandra/streaming/StreamSession.SSTableStreamingSections.html" title="class in org.apache.cassandra.streaming">StreamSession.SSTableStreamingSections</a>&gt;&nbsp;sstableDetails)</pre> </li> </ul> <a name="state(org.apache.cassandra.streaming.StreamSession.State)"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>state</h4> <pre>public&nbsp;void&nbsp;state(<a href="../../../../org/apache/cassandra/streaming/StreamSession.State.html" title="enum in org.apache.cassandra.streaming">StreamSession.State</a>&nbsp;newState)</pre> <div class="block">Set current state to <code>newState</code>.</div> <dl><dt><span class="strong">Parameters:</span></dt><dd><code>newState</code> - new state to set</dd></dl> </li> </ul> <a name="state()"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>state</h4> <pre>public&nbsp;<a href="../../../../org/apache/cassandra/streaming/StreamSession.State.html" title="enum in org.apache.cassandra.streaming">StreamSession.State</a>&nbsp;state()</pre> <dl><dt><span class="strong">Returns:</span></dt><dd>current state</dd></dl> </li> </ul> <a name="isSuccess()"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>isSuccess</h4> <pre>public&nbsp;boolean&nbsp;isSuccess()</pre> <div class="block">Return if this session completed successfully.</div> <dl><dt><span class="strong">Returns:</span></dt><dd>true if session completed successfully.</dd></dl> </li> </ul> <a name="messageReceived(org.apache.cassandra.streaming.messages.StreamMessage)"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>messageReceived</h4> <pre>public&nbsp;void&nbsp;messageReceived(<a href="../../../../org/apache/cassandra/streaming/messages/StreamMessage.html" title="class in org.apache.cassandra.streaming.messages">StreamMessage</a>&nbsp;message)</pre> </li> </ul> <a name="onInitializationComplete()"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>onInitializationComplete</h4> <pre>public&nbsp;void&nbsp;onInitializationComplete()</pre> <div class="block">Call back when connection initialization is complete to start the prepare phase.</div> </li> </ul> <a name="onError(java.lang.Throwable)"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>onError</h4> <pre>public&nbsp;void&nbsp;onError(java.lang.Throwable&nbsp;e)</pre> <div class="block">l Call back for handling exception during streaming.</div> <dl><dt><span class="strong">Parameters:</span></dt><dd><code>e</code> - thrown exception</dd></dl> </li> </ul> <a name="prepare(java.util.Collection, java.util.Collection)"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>prepare</h4> <pre>public&nbsp;void&nbsp;prepare(java.util.Collection&lt;<a href="../../../../org/apache/cassandra/streaming/StreamRequest.html" title="class in org.apache.cassandra.streaming">StreamRequest</a>&gt;&nbsp;requests, java.util.Collection&lt;<a href="../../../../org/apache/cassandra/streaming/StreamSummary.html" title="class in org.apache.cassandra.streaming">StreamSummary</a>&gt;&nbsp;summaries)</pre> <div class="block">Prepare this session for sending/receiving files.</div> </li> </ul> <a name="fileSent(org.apache.cassandra.streaming.messages.FileMessageHeader)"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>fileSent</h4> <pre>public&nbsp;void&nbsp;fileSent(<a href="../../../../org/apache/cassandra/streaming/messages/FileMessageHeader.html" title="class in org.apache.cassandra.streaming.messages">FileMessageHeader</a>&nbsp;header)</pre> <div class="block">Call back after sending FileMessageHeader.</div> <dl><dt><span class="strong">Parameters:</span></dt><dd><code>header</code> - sent header</dd></dl> </li> </ul> <a name="receive(org.apache.cassandra.streaming.messages.IncomingFileMessage)"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>receive</h4> <pre>public&nbsp;void&nbsp;receive(<a href="../../../../org/apache/cassandra/streaming/messages/IncomingFileMessage.html" title="class in org.apache.cassandra.streaming.messages">IncomingFileMessage</a>&nbsp;message)</pre> <div class="block">Call back after receiving FileMessageHeader.</div> <dl><dt><span class="strong">Parameters:</span></dt><dd><code>message</code> - received file</dd></dl> </li> </ul> <a name="progress(org.apache.cassandra.io.sstable.Descriptor, org.apache.cassandra.streaming.ProgressInfo.Direction, long, long)"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>progress</h4> <pre>public&nbsp;void&nbsp;progress(<a href="../../../../org/apache/cassandra/io/sstable/Descriptor.html" title="class in org.apache.cassandra.io.sstable">Descriptor</a>&nbsp;desc, <a href="../../../../org/apache/cassandra/streaming/ProgressInfo.Direction.html" title="enum in org.apache.cassandra.streaming">ProgressInfo.Direction</a>&nbsp;direction, long&nbsp;bytes, long&nbsp;total)</pre> </li> </ul> <a name="received(java.util.UUID, int)"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>received</h4> <pre>public&nbsp;void&nbsp;received(java.util.UUID&nbsp;cfId, int&nbsp;sequenceNumber)</pre> </li> </ul> <a name="retry(java.util.UUID, int)"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>retry</h4> <pre>public&nbsp;void&nbsp;retry(java.util.UUID&nbsp;cfId, int&nbsp;sequenceNumber)</pre> <div class="block">Call back on receiving <code>StreamMessage.Type.RETRY</code> message.</div> <dl><dt><span class="strong">Parameters:</span></dt><dd><code>cfId</code> - ColumnFamily ID</dd><dd><code>sequenceNumber</code> - Sequence number to indicate which file to stream again</dd></dl> </li> </ul> <a name="complete()"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>complete</h4> <pre>public&nbsp;void&nbsp;complete()</pre> <div class="block">Check if session is completed on receiving <code>StreamMessage.Type.COMPLETE</code> message.</div> </li> </ul> <a name="sessionFailed()"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>sessionFailed</h4> <pre>public&nbsp;void&nbsp;sessionFailed()</pre> <div class="block">Call back on receiving <code>StreamMessage.Type.SESSION_FAILED</code> message.</div> </li> </ul> <a name="doRetry(org.apache.cassandra.streaming.messages.FileMessageHeader, java.lang.Throwable)"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>doRetry</h4> <pre>public&nbsp;void&nbsp;doRetry(<a href="../../../../org/apache/cassandra/streaming/messages/FileMessageHeader.html" title="class in org.apache.cassandra.streaming.messages">FileMessageHeader</a>&nbsp;header, java.lang.Throwable&nbsp;e)</pre> </li> </ul> <a name="getSessionInfo()"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>getSessionInfo</h4> <pre>public&nbsp;<a href="../../../../org/apache/cassandra/streaming/SessionInfo.html" title="class in org.apache.cassandra.streaming">SessionInfo</a>&nbsp;getSessionInfo()</pre> <dl><dt><span class="strong">Returns:</span></dt><dd>Current snapshot of this session info.</dd></dl> </li> </ul> <a name="taskCompleted(org.apache.cassandra.streaming.StreamReceiveTask)"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>taskCompleted</h4> <pre>public&nbsp;void&nbsp;taskCompleted(<a href="../../../../org/apache/cassandra/streaming/StreamReceiveTask.html" title="class in org.apache.cassandra.streaming">StreamReceiveTask</a>&nbsp;completedTask)</pre> </li> </ul> <a name="taskCompleted(org.apache.cassandra.streaming.StreamTransferTask)"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>taskCompleted</h4> <pre>public&nbsp;void&nbsp;taskCompleted(<a href="../../../../org/apache/cassandra/streaming/StreamTransferTask.html" title="class in org.apache.cassandra.streaming">StreamTransferTask</a>&nbsp;completedTask)</pre> </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="blockListLast"> <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> </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/StreamSession.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="../.