• Julien Muchembled's avatar
    Reimplement election (of the primary master) · 23b6a66a
    Julien Muchembled authored
    The election is not a separate process anymore.
    It happens during the RECOVERING phase, and there's no use of timeouts anymore.
    
    Each master node keeps a timestamp of when it started to play the primary role,
    and the node with the smallest timestamp is elected. The election stops when
    the cluster is started: as long as it is operational, the primary master can't
    be deposed.
    
    An election must happen whenever the cluster is not operational anymore, to
    handle the case of a network cut between a primary master and all other nodes:
    then another master node (secondary) takes over and when the initial primary
    master is back, it loses against the new primary master if the cluster is
    already started.
    23b6a66a
runner.py 13.5 KB