==Algorithm==
The algorithm uses the following message types:
* Election Message: Sent to announce faster election
* Answer (Alive) Message: RespondResponds to the election message
* Coordinator (Victory) Message: Sent toby announcewinner of the identityelection ofto the electedannounce processvictory.
When a process P recovers from failure, or determines that the current coordinator is down because of message timeouts or failure of the coordinator to initiate a handshake, it performs the following sequence of actions:
# If P has the highest process id, it sends a Victory message to all other processes and becomes the new Coordinator. Otherwise, P broadcasts an Election message (inquiry) to all other processes with higher process IDs than itself.
# If P receives no Answer fromafter asending processan withElection a higher process IDmessage, then it broadcasts a Victory message to all other processes and becomes the Coordinator.
# If P receives an Answer from a process with a higher ID, P waits a certain amount of time for another process with a higher ID to broadcast a Victory message to all other processes. If it does not receive a Victory message in time, it re-broadcasts the Election message.
# If P getsreceives an Election message (inquiry) from another process with a lower ID it sends an Answer message back and starts a new election (that is, P sends Election messages to the processes with higher ids than itself).
# If P receives a Coordinator message, it treats the sender as the coordinator.
Note that if P receives a victory message from a process with a lower ID number, it immediately initiates a new election. This is how the algorithm gets its name – a process with a higher ID number will bully a lower ID process out of the coordinator position as soon as it comes online.
== See also ==
|