org.apache.solr.cloud
Class LeaderElector

java.lang.Object
  extended by org.apache.solr.cloud.LeaderElector

public class LeaderElector
extends Object

Leader Election process. This class contains the logic by which a leader is chosen. First call * setup(ElectionContext) to ensure the election process is init'd. Next call joinElection(ElectionContext, boolean) to start the leader election. The implementation follows the classic ZooKeeper recipe of creating an ephemeral, sequential node for each candidate and then looking at the set of such nodes - if the created node is the lowest sequential node, the candidate that created the node is the leader. If not, the candidate puts a watch on the next lowest node it finds, and if that node goes down, starts the whole process over by checking if it's the lowest sequential node, etc.


Field Summary
protected  SolrZkClient zkClient
           
 
Constructor Summary
LeaderElector(SolrZkClient zkClient)
           
 
Method Summary
 int joinElection(ElectionContext context, boolean replacement)
          Begin participating in the election process.
protected  void runIamLeaderProcess(ElectionContext context, boolean weAreReplacement)
           
 void setup(ElectionContext context)
          Set up any ZooKeeper nodes needed for leader election.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

zkClient

protected SolrZkClient zkClient
Constructor Detail

LeaderElector

public LeaderElector(SolrZkClient zkClient)
Method Detail

runIamLeaderProcess

protected void runIamLeaderProcess(ElectionContext context,
                                   boolean weAreReplacement)
                            throws org.apache.zookeeper.KeeperException,
                                   InterruptedException,
                                   IOException
Throws:
org.apache.zookeeper.KeeperException
InterruptedException
IOException

joinElection

public int joinElection(ElectionContext context,
                        boolean replacement)
                 throws org.apache.zookeeper.KeeperException,
                        InterruptedException,
                        IOException
Begin participating in the election process. Gets a new sequential number and begins watching the node with the sequence number before it, unless it is the lowest number, in which case, initiates the leader process. If the node that is watched goes down, check if we are the new lowest node, else watch the next lowest numbered node.

Returns:
sequential node number
Throws:
org.apache.zookeeper.KeeperException
InterruptedException
IOException

setup

public void setup(ElectionContext context)
           throws InterruptedException,
                  org.apache.zookeeper.KeeperException
Set up any ZooKeeper nodes needed for leader election.

Throws:
InterruptedException
org.apache.zookeeper.KeeperException


Copyright © 2000-2013 Apache Software Foundation. All Rights Reserved.