org.apache.cassandra.gms
Class Gossiper

java.lang.Object
  extended by org.apache.cassandra.gms.Gossiper
All Implemented Interfaces:
IFailureDetectionEventListener

public class Gossiper
extends java.lang.Object
implements IFailureDetectionEventListener

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.


Field Summary
static Gossiper instance
           
static int intervalInMillis_
           
 
Method Summary
 void addLocalApplicationState(ApplicationState state, VersionedValue value)
           
 void addSavedEndpoint(java.net.InetAddress ep)
          Add an endpoint we knew about previously, but whose state is unknown
 int compareEndpointStartup(java.net.InetAddress addr1, java.net.InetAddress addr2)
          determine which endpoint started up earlier
 void convict(java.net.InetAddress endpoint)
          This method is part of IFailureDetectionEventListener interface.
 int getCurrentGenerationNumber(java.net.InetAddress endpoint)
           
 java.util.Set<java.net.InetAddress> getLiveMembers()
           
 java.util.Set<java.net.InetAddress> getUnreachableMembers()
           
 void initializeNodeUnsafe(java.net.InetAddress addr, int generationNbr)
          This should *only* be used for testing purposes.
 boolean isKnownEndpoint(java.net.InetAddress endpoint)
           
 void register(IEndpointStateChangeSubscriber subscriber)
          Register for interesting state changes.
 void removeEndpoint(java.net.InetAddress endpoint)
          Removes the endpoint completely from Gossip
 void start(java.net.InetAddress localEndpoint, int generationNbr)
          Start the gossiper with the generation # retrieved from the System table
 void stop()
           
 void unregister(IEndpointStateChangeSubscriber subscriber)
          Unregister interest for state changes.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

intervalInMillis_

public static final int intervalInMillis_
See Also:
Constant Field Values

instance

public static final Gossiper instance
Method Detail

register

public void register(IEndpointStateChangeSubscriber subscriber)
Register for interesting state changes.

Parameters:
subscriber - module which implements the IEndpointStateChangeSubscriber

unregister

public void unregister(IEndpointStateChangeSubscriber subscriber)
Unregister interest for state changes.

Parameters:
subscriber - module which implements the IEndpointStateChangeSubscriber

getLiveMembers

public java.util.Set<java.net.InetAddress> getLiveMembers()

getUnreachableMembers

public java.util.Set<java.net.InetAddress> getUnreachableMembers()

convict

public void convict(java.net.InetAddress endpoint)
This method is part of IFailureDetectionEventListener interface. This is invoked by the Failure Detector when it convicts an end point. param @ endpoint end point that is convicted.

Specified by:
convict in interface IFailureDetectionEventListener
Parameters:
endpoint - endpoint to be convicted

removeEndpoint

public void removeEndpoint(java.net.InetAddress endpoint)
Removes the endpoint completely from Gossip


isKnownEndpoint

public boolean isKnownEndpoint(java.net.InetAddress endpoint)

getCurrentGenerationNumber

public int getCurrentGenerationNumber(java.net.InetAddress endpoint)

compareEndpointStartup

public int compareEndpointStartup(java.net.InetAddress addr1,
                                  java.net.InetAddress addr2)
determine which endpoint started up earlier


start

public void start(java.net.InetAddress localEndpoint,
                  int generationNbr)
Start the gossiper with the generation # retrieved from the System table


addSavedEndpoint

public void addSavedEndpoint(java.net.InetAddress ep)
Add an endpoint we knew about previously, but whose state is unknown


addLocalApplicationState

public void addLocalApplicationState(ApplicationState state,
                                     VersionedValue value)

stop

public void stop()

initializeNodeUnsafe

public void initializeNodeUnsafe(java.net.InetAddress addr,
                                 int generationNbr)
This should *only* be used for testing purposes.



Copyright © 2010 The Apache Software Foundation