Package org.onosproject.store.service
Interface LeaderElector
-
- All Superinterfaces:
DistributedPrimitive
- All Known Implementing Classes:
DefaultLeaderElector
public interface LeaderElector extends DistributedPrimitive
LeaderElectorprovides the same functionality asAsyncLeaderElectorwith the only difference that all its methods block until the corresponding operation completes.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface org.onosproject.store.service.DistributedPrimitive
DistributedPrimitive.Status, DistributedPrimitive.Type
-
-
Field Summary
-
Fields inherited from interface org.onosproject.store.service.DistributedPrimitive
DEFAULT_OPERATION_TIMEOUT_MILLIS
-
-
Method Summary
All Methods Instance Methods Abstract Methods Default Methods Modifier and Type Method Description voidaddChangeListener(Consumer<Change<Leadership>> consumer)Registers a listener to be notified of Leadership changes for all topics.booleananoint(String topic, NodeId nodeId)Attempts to promote a node to leadership displacing the current leader.booleandemote(String topic, NodeId nodeId)Attempts to demote a node to the bottom of the candidate list.voidevict(NodeId nodeId)Attempts to evict a node from all leadership elections it is registered for.LeadershipgetLeadership(String topic)Returns theLeadershipfor the specified topic.Map<String,Leadership>getLeaderships()Returns the currentLeaderships for all topics.default DistributedPrimitive.TypeprimitiveType()Returns the type of primitive.booleanpromote(String topic, NodeId nodeId)Attempts to promote a node to top of candidate list.voidremoveChangeListener(Consumer<Change<Leadership>> consumer)Unregisters a previously registered change notification listener.Leadershiprun(String topic, NodeId nodeId)Attempts to become leader for a topic.voidwithdraw(String topic)Withdraws from leadership race for a topic.-
Methods inherited from interface org.onosproject.store.service.DistributedPrimitive
addStatusChangeListener, applicationId, destroy, name, removeStatusChangeListener, statusChangeListeners
-
-
-
-
Method Detail
-
primitiveType
default DistributedPrimitive.Type primitiveType()
Description copied from interface:DistributedPrimitiveReturns the type of primitive.- Specified by:
primitiveTypein interfaceDistributedPrimitive- Returns:
- primitive type
-
run
Leadership run(String topic, NodeId nodeId)
Attempts to become leader for a topic.- Parameters:
topic- leadership topicnodeId- instance identifier of the node- Returns:
- current Leadership state of the topic
-
withdraw
void withdraw(String topic)
Withdraws from leadership race for a topic.- Parameters:
topic- leadership topic
-
anoint
boolean anoint(String topic, NodeId nodeId)
Attempts to promote a node to leadership displacing the current leader.- Parameters:
topic- leadership topicnodeId- instance identifier of the new leader- Returns:
trueif leadership transfer was successfully executed;falseif it failed. This operation can returnfalseif the node to be made new leader is not registered to run for election for the topic.
-
promote
boolean promote(String topic, NodeId nodeId)
Attempts to promote a node to top of candidate list.- Parameters:
topic- leadership topicnodeId- instance identifier of the new top candidate- Returns:
trueif node is now the top candidate. This operation can fail (i.e. returnfalse) if the node is not registered to run for election for the topic.
-
evict
void evict(NodeId nodeId)
Attempts to evict a node from all leadership elections it is registered for.If the node the current leader for a topic, this call will force the next candidate (if one exists) to be promoted to leadership.
- Parameters:
nodeId- node instance identifier
-
getLeadership
Leadership getLeadership(String topic)
Returns theLeadershipfor the specified topic.- Parameters:
topic- leadership topic- Returns:
- current Leadership state of the topic
-
getLeaderships
Map<String,Leadership> getLeaderships()
Returns the currentLeaderships for all topics.- Returns:
- topic name to Leadership mapping
-
addChangeListener
void addChangeListener(Consumer<Change<Leadership>> consumer)
Registers a listener to be notified of Leadership changes for all topics.- Parameters:
consumer- listener to add
-
removeChangeListener
void removeChangeListener(Consumer<Change<Leadership>> consumer)
Unregisters a previously registered change notification listener.If the specified listener was not previously registered, this operation will be a noop.
- Parameters:
consumer- listener to remove
-
demote
boolean demote(String topic, NodeId nodeId)
Attempts to demote a node to the bottom of the candidate list. It is not allowed to demote the current leader- Parameters:
topic- leadership topicnodeId- identifier of node to be demoted- Returns:
trueif nodeId is now the bottom candidate. This method returnsfalseifnodeIdis not one of the candidates for the topic or if it is the leader.
-
-