You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This leads to the CommittedEntriesAgreement invariant to fail.
Here is a picture of the situation on a modified fork with 3 servers and network partitions
heartbeat sent to follower with commitIndex > matchIndex
Raft in invalid state
This is easy to simulate on my fork with disconnection #3 but reproduction can be done with vanilla runway raft with the following steps:
Let S1 become a leader and commit (1,1) into the log.
Disconnect leader (do not allow any further messages to s1)
Append (2,1) to S1's log
Let S2 become leader (with votes from all others) and commit (2,2) into log (with quorum of all except S1)
Reconnect S1 (this will trigger an election, but eventually some node except S1 will be a leader. wlog let it be S2)
Then, S2 sends a heartbeat eventually to S1 with commitindex=2, but where the matchIndex of S1 is just 0. Then S1 thinks it is fine to commit (2,1), which is different from the committed (2,2) of all other nodes. This causes the invariant to fail.
The text was updated successfully, but these errors were encountered:
This leads to the
CommittedEntriesAgreement
invariant to fail.Here is a picture of the situation on a modified fork with 3 servers and network partitions
heartbeat sent to follower with commitIndex > matchIndex
Raft in invalid state
This is easy to simulate on my fork with disconnection #3 but reproduction can be done with vanilla runway raft with the following steps:
Then, S2 sends a heartbeat eventually to S1 with commitindex=2, but where the matchIndex of S1 is just 0. Then S1 thinks it is fine to commit (2,1), which is different from the committed (2,2) of all other nodes. This causes the invariant to fail.
The text was updated successfully, but these errors were encountered: