Interface RaftPolicy

  • All Known Implementing Classes:
    DefaultRaftPolicy, DisableElectionsRaftPolicy, TestOnlyRaftPolicy, TwoNodeClusterRaftPolicy

    public interface RaftPolicy
    The RaftPolicy is intended to change the default behavior of Raft. For example we may want to be able to determine which Raft replica should become the leader - with Raft elections are randomized so it is not possible to specify which replica should be the leader. The ability to specify the leader would be quite useful when testing a raft cluster.

    Similarly we may want to customize when exactly we apply a modification to the state - with Raft a modification is only applied to the state when the modification is replicated to a majority of the replicas. The ability to apply a modification to the state before consensus would be useful in scenarios where you have only 2 nodes in a Raft cluster and one of them is down but you still want the RaftActor to apply a modification to the state.

    • Method Detail

      • automaticElectionsEnabled

        boolean automaticElectionsEnabled()
        According to Raft a Follower which does not receive a heartbeat (aka AppendEntries) in a given period should become a Candidate and trigger an election.
        Returns:
        true to enable automatic Raft elections, false to disable them
      • applyModificationToStateBeforeConsensus

        boolean applyModificationToStateBeforeConsensus()
        According to Raft consensus on a Raft entry is achieved only after a Leader replicates a log entry to a majority of it's followers.
        Returns:
        true if modification should be applied before consensus, false to apply modification to state as per Raft