org.apache.zookeeper.server.quorum
Class Leader

java.lang.Object
  extended by org.apache.zookeeper.server.quorum.Leader

public class Leader
extends Object

This class has the control logic for the Leader.


Nested Class Summary
static class Leader.Proposal
           
 
Field Summary
 HashSet<FollowerHandler> followers
           
 HashSet<FollowerHandler> forwardingFollowers
           
 HashMap<Long,List<FollowerSyncRequest>> pendingSyncs
           
static int PROPOSAL
          This message type is sent by a leader to propose a mutation.
 
Method Summary
 void commit(long zxid)
          Create a commit packet and send it to all the members of the quorum
 void processAck(long sid, long zxid, SocketAddress followerAddr)
          Keep a count of acks that are received by the leader for a particular proposal
 void processSync(FollowerSyncRequest r)
          Process sync requests
 Leader.Proposal propose(Request request)
          create a proposal and send it out to all the members
 void sendSync(FollowerSyncRequest r)
          Sends a sync message to the appropriate server
 long startForwarding(FollowerHandler handler, long lastSeenZxid)
          lets the leader know that a follower is capable of following and is done syncing
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

followers

public HashSet<FollowerHandler> followers

forwardingFollowers

public HashSet<FollowerHandler> forwardingFollowers

pendingSyncs

public HashMap<Long,List<FollowerSyncRequest>> pendingSyncs

PROPOSAL

public static final int PROPOSAL
This message type is sent by a leader to propose a mutation.

See Also:
Constant Field Values
Method Detail

processAck

public void processAck(long sid,
                       long zxid,
                       SocketAddress followerAddr)
Keep a count of acks that are received by the leader for a particular proposal

Parameters:
zxid - the zxid of the proposal sent out
followerAddr -

commit

public void commit(long zxid)
Create a commit packet and send it to all the members of the quorum

Parameters:
zxid -

propose

public Leader.Proposal propose(Request request)
create a proposal and send it out to all the members

Parameters:
request -
Returns:
the proposal that is queued to send to all the members

processSync

public void processSync(FollowerSyncRequest r)
Process sync requests

Parameters:
r - the request

sendSync

public void sendSync(FollowerSyncRequest r)
Sends a sync message to the appropriate server

Parameters:
f -
r -

startForwarding

public long startForwarding(FollowerHandler handler,
                            long lastSeenZxid)
lets the leader know that a follower is capable of following and is done syncing

Parameters:
handler - handler of the follower
Returns:
last proposed zxid