Five Raft nodes. Break them any way you like.
A key-value store written in C++ from the consensus layer up. Kill the leader, kill every node, then check whether any data went missing.
Cluster
Click a node to select it
Whole cluster
Pause freezes the process (SIGSTOP), like a network partition or a long GC pause. When it resumes, the old leader learns it has been replaced.
Replicated logs
Each cell is one log entry. Filled means committed. Colour is the term it was written in.
Key-value store
What just happened
Failover test
What changed, in numbers
The project I started from had no working persistence and waited for the next heartbeat before replicating every write. Same machine, same 3-node setup, median of 3 runs.
Measured with a C++ client against 3 nodes with fsync on, Docker on an Apple-silicon Mac. "Same settings" snapshots on almost every write, as the original did; "tuned" uses a 1 MB snapshot threshold.