org.apache.cassandra.gms
Class Gossiper

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

public class Gossiper
extends java.lang.Object
implements IFailureDetectionEventListener, IEndPointStateChangePublisher

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.


Method Summary
 void addApplicationState(java.lang.String key, ApplicationState appState)
           
 void convict(EndPoint endpoint)
          This method is part of IFailureDetectionEventListener interface.
 void deleteApplicationState(java.lang.String key)
           
 java.util.Set<EndPoint> getAllMembers()
           
 int getCurrentGenerationNumber(EndPoint endpoint)
           
 java.util.Set<EndPoint> getLiveMembers()
           
 java.util.Set<EndPoint> getUnreachableMembers()
           
static Gossiper instance()
           
 void register(IEndPointStateChangeSubscriber subscriber)
          Register for interesting state changes.
 void removeFromMembership(EndPoint ep)
          This method is used to forcibly remove a node from the membership set.
 void start(EndPoint localEndPoint, int generationNbr)
           
 void stop()
           
 void suspect(EndPoint endpoint)
          This method is part of IFailureDetectionEventListener interface.
 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
 

Method Detail

instance

public static Gossiper instance()

register

public void register(IEndPointStateChangeSubscriber subscriber)
Description copied from interface: IEndPointStateChangePublisher
Register for interesting state changes.

Specified by:
register in interface IEndPointStateChangePublisher
Parameters:
subscriber - module which implements the IEndPointStateChangeSubscriber

unregister

public void unregister(IEndPointStateChangeSubscriber subscriber)
Description copied from interface: IEndPointStateChangePublisher
Unregister interest for state changes.

Specified by:
unregister in interface IEndPointStateChangePublisher
Parameters:
subscriber - module which implements the IEndPointStateChangeSubscriber

getAllMembers

public java.util.Set<EndPoint> getAllMembers()

getLiveMembers

public java.util.Set<EndPoint> getLiveMembers()

getUnreachableMembers

public java.util.Set<EndPoint> getUnreachableMembers()

removeFromMembership

public void removeFromMembership(EndPoint ep)
This method is used to forcibly remove a node from the membership set. He is forgotten locally immediately. param@ ep the endpoint to be removed from membership.


convict

public void convict(EndPoint 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

suspect

public void suspect(EndPoint endpoint)
This method is part of IFailureDetectionEventListener interface. This is invoked by the Failure Detector when it suspects an end point. param @ endpoint end point that is suspected.

Specified by:
suspect in interface IFailureDetectionEventListener
Parameters:
endpoint - endpoint to be suspected.

getCurrentGenerationNumber

public int getCurrentGenerationNumber(EndPoint endpoint)

start

public void start(EndPoint localEndPoint,
                  int generationNbr)
           throws java.io.IOException
Throws:
java.io.IOException

addApplicationState

public void addApplicationState(java.lang.String key,
                                ApplicationState appState)

deleteApplicationState

public void deleteApplicationState(java.lang.String key)

stop

public void stop()


Copyright © 2009 The Apache Software Foundation