org.apache.zookeeper.server.quorum
Class Leader

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

public class Leader
extends java.lang.Object

This class has the control logic for the Leader.


Nested Class Summary
static class Leader.Proposal
           
static class Leader.XidRolloverException
           
 
Field Summary
 java.util.HashSet<LearnerHandler> forwardingFollowers
           
 java.util.HashSet<LearnerHandler> learners
           
protected  java.util.HashSet<LearnerHandler> observingLearners
           
 java.util.HashMap<java.lang.Long,java.util.List<LearnerSyncRequest>> 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
 long getEpoch()
          Returns the current epoch of the leader.
 void inform(Leader.Proposal proposal)
          Create an inform packet and send it to all observers.
 void processAck(long sid, long zxid, java.net.SocketAddress followerAddr)
          Keep a count of acks that are received by the leader for a particular proposal
 void processSync(LearnerSyncRequest r)
          Process sync requests
 Leader.Proposal propose(Request request)
          create a proposal and send it out to all the members
 void sendSync(LearnerSyncRequest r)
          Sends a sync message to the appropriate server
 long startForwarding(LearnerHandler 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

learners

public final java.util.HashSet<LearnerHandler> learners

forwardingFollowers

public final java.util.HashSet<LearnerHandler> forwardingFollowers

observingLearners

protected final java.util.HashSet<LearnerHandler> observingLearners

pendingSyncs

public final java.util.HashMap<java.lang.Long,java.util.List<LearnerSyncRequest>> 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,
                       java.net.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 -

inform

public void inform(Leader.Proposal proposal)
Create an inform packet and send it to all observers.

Parameters:
zxid -
proposal -

getEpoch

public long getEpoch()
Returns the current epoch of the leader.

Returns:

propose

public Leader.Proposal propose(Request request)
                        throws Leader.XidRolloverException
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
Throws:
Leader.XidRolloverException

processSync

public void processSync(LearnerSyncRequest r)
Process sync requests

Parameters:
r - the request

sendSync

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

Parameters:
f -
r -

startForwarding

public long startForwarding(LearnerHandler 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


Copyright © 2012 The Apache Software Foundation