The highest promised and highest committed progress of a node in the cluster.
The last heartbeat value seen from a leader. Note that clocks are not synced so this value is only used as evidence that a stable leader is up whereas the paxos number and committed slot are taken as authoritative that a new leader is making progress.
The next randomised point in time that this node will timeout. Followers timeout on Commit messages and become a Recoverer. Recoverers timeout on PrepareResponses and AcceptResponses. Leaders timeout on AcceptResponses.
The current size of the cluster.
The outstanding uncommitted proposed work of the leader take over phase during the recovery of a leader failover. Each key is an identifier of a prepare for which we are collecting a majority response to determine the highest proposed value of the previous leader if any.
The leaders paxos number when leading.
Tracking of responses to accept messages when Recoverer or Leader. Each key is an identifier of the command we want to commit. Each value is a map of the ack/nacks of each cluster node with a timeout.
The client work outstanding with the leader. The map key is the accept identifier and the value is a tuple of the client command and the client ref.
Tracking of responses to accept messages when Recoverer or Leader.
Tracking of responses to accept messages when Recoverer or Leader. Each key is an identifier of the command we want to commit. Each value is a map of the ack/nacks of each cluster node with a timeout.
The client work outstanding with the leader.
The client work outstanding with the leader. The map key is the accept identifier and the value is a tuple of the client command and the client ref.
The current size of the cluster.
The leaders paxos number when leading.
The last heartbeat value seen from a leader.
The last heartbeat value seen from a leader. Note that clocks are not synced so this value is only used as evidence that a stable leader is up whereas the paxos number and committed slot are taken as authoritative that a new leader is making progress.
The outstanding uncommitted proposed work of the leader take over phase during the recovery of a leader failover.
The outstanding uncommitted proposed work of the leader take over phase during the recovery of a leader failover. Each key is an identifier of a prepare for which we are collecting a majority response to determine the highest proposed value of the previous leader if any.
The highest promised and highest committed progress of a node in the cluster.
The next randomised point in time that this node will timeout.
The next randomised point in time that this node will timeout. Followers timeout on Commit messages and become a Recoverer. Recoverers timeout on PrepareResponses and AcceptResponses. Leaders timeout on AcceptResponses.
This algebraic type holds the state of a node in the cluster.
The highest promised and highest committed progress of a node in the cluster.
The last heartbeat value seen from a leader. Note that clocks are not synced so this value is only used as evidence that a stable leader is up whereas the paxos number and committed slot are taken as authoritative that a new leader is making progress.
The next randomised point in time that this node will timeout. Followers timeout on Commit messages and become a Recoverer. Recoverers timeout on PrepareResponses and AcceptResponses. Leaders timeout on AcceptResponses.
The current size of the cluster.
The outstanding uncommitted proposed work of the leader take over phase during the recovery of a leader failover. Each key is an identifier of a prepare for which we are collecting a majority response to determine the highest proposed value of the previous leader if any.
The leaders paxos number when leading.
Tracking of responses to accept messages when Recoverer or Leader. Each key is an identifier of the command we want to commit. Each value is a map of the ack/nacks of each cluster node with a timeout.
The client work outstanding with the leader. The map key is the accept identifier and the value is a tuple of the client command and the client ref.