org.apache.solr.cloud
Class LeaderElector
java.lang.Object
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)
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.
TODO: now we could just reuse the lock package code for leader election
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
zkClient
protected SolrZkClient zkClient
LeaderElector
public LeaderElector(SolrZkClient zkClient)
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)
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.
- Parameters:
context
-
- Returns:
- sequential node number
- Throws:
org.apache.zookeeper.KeeperException
InterruptedException
IOException
UnsupportedEncodingException
setup
public void setup(ElectionContext context)
throws InterruptedException,
org.apache.zookeeper.KeeperException
- Set up any ZooKeeper nodes needed for leader election.
- Parameters:
context
-
- Throws:
InterruptedException
org.apache.zookeeper.KeeperException
Copyright © 2000-2012 Apache Software Foundation. All Rights Reserved.