Releases: lbinria/Raft
Stable and correct version of Raft consensus
- Use https://github.com/lbinria/trace_validation_tools/releases/tag/v1.2
- Improve trace spec modules, execution scripts
- Improve README
Stable and correct version of Raft consensus
- Use https://github.com/lbinria/trace_validation_tools/releases/tag/v1.1
- Trace spec can manage exceptions now
Stable and incorrect version of Raft consensus
Reintroduce a bug on vote phase.
It was a previously encountered bug:
The inequality was set to non-strict which introduce a bug related to the quorum (the majority required for a node to be a leader).
The spec majority is defined like following:
Quorum == {i \in SUBSET(Server) : Cardinality(i) * 2 > Cardinality(Server)}
Which mean that number of nodes in quorum * 2 must be greater than number of nodes in cluster.
So if we consider a node to have majority when n >= quorum
with quorum = nbNodes / 2
(with int division) instead of n > quorum
. It will lead to an error, for example:
- 2 nodes : n >= 1, instead of n >= 2
- 3 nodes : n >= 1, instead of n >= 2
- 4 nodes : n >= 2, instead of n >= 3
...
With n
the number of nodes agree on a vote.
Stable and incorrect version of Raft consensus
Reintroduce a bug on vote phase.
It was a previously encountered bug:
The inequality was set to non-strict which introduce a bug related to the quorum (the majority required for a node to be a leader).
The spec majority is defined like following:
Quorum == {i \in SUBSET(Server) : Cardinality(i) * 2 > Cardinality(Server)}
Which mean that number of nodes in quorum * 2 must be greater than number of nodes in cluster.
So if we consider a node to have majority when n >= quorum
with quorum = nbNodes / 2
(with int division) instead of n > quorum
. It will lead to an error, for example:
- 2 nodes : n >= 1, instead of n >= 2
- 3 nodes : n >= 1, instead of n >= 2
- 4 nodes : n >= 2, instead of n >= 3
...
With n
the number of nodes agree on a vote.
Stable and correct version of Raft consensus based on spec. refinement
Complete, stable and correct version of raft consensus based on trace spec which refine the raft spec.