public class LeaderElector extends Object
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.Modifier and Type | Field and Description |
---|---|
static Pattern |
LEADER_SEQ |
protected SolrZkClient |
zkClient |
Constructor and Description |
---|
LeaderElector(SolrZkClient zkClient) |
LeaderElector(SolrZkClient zkClient,
org.apache.solr.cloud.ZkController.ContextKey key,
Map<org.apache.solr.cloud.ZkController.ContextKey,ElectionContext> electionContexts) |
Modifier and Type | Method and Description |
---|---|
ElectionContext |
getContext() |
static String |
getNodeName(String nStringSequence) |
static int |
getSeq(String nStringSequence)
Returns int given String of form n_0000000001 or n_0000000003, etc.
|
int |
joinElection(ElectionContext context,
boolean replacement) |
int |
joinElection(ElectionContext context,
boolean replacement,
boolean joinAtHead)
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.
|
static void |
sortSeqs(List<String> seqs)
Sort n string sequence list.
|
public static final Pattern LEADER_SEQ
protected SolrZkClient zkClient
public LeaderElector(SolrZkClient zkClient)
public LeaderElector(SolrZkClient zkClient, org.apache.solr.cloud.ZkController.ContextKey key, Map<org.apache.solr.cloud.ZkController.ContextKey,ElectionContext> electionContexts)
public ElectionContext getContext()
protected void runIamLeaderProcess(ElectionContext context, boolean weAreReplacement) throws org.apache.zookeeper.KeeperException, InterruptedException, IOException
org.apache.zookeeper.KeeperException
InterruptedException
IOException
public static int getSeq(String nStringSequence)
public int joinElection(ElectionContext context, boolean replacement) throws org.apache.zookeeper.KeeperException, InterruptedException, IOException
org.apache.zookeeper.KeeperException
InterruptedException
IOException
public int joinElection(ElectionContext context, boolean replacement, boolean joinAtHead) throws org.apache.zookeeper.KeeperException, InterruptedException, IOException
org.apache.zookeeper.KeeperException
InterruptedException
IOException
public void setup(ElectionContext context) throws InterruptedException, org.apache.zookeeper.KeeperException
InterruptedException
org.apache.zookeeper.KeeperException
Copyright © 2000-2017 Apache Software Foundation. All Rights Reserved.