Skip to content
Merged
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions tla/consensus/ccfraft.tla
Original file line number Diff line number Diff line change
Expand Up @@ -898,6 +898,9 @@ AdvanceCommitIndex(i) ==
CheckQuorum(i) ==
\* Check node is a leader (and therefore has not completed retirement)
/\ leadershipState[i] = Leader
\* There must be an active config which has a replica which is not this node
/\ \E c \in DOMAIN configurations[i]:
\E n \in configurations[i][c]: n /= i
/\ leadershipState' = [leadershipState EXCEPT ![i] = Follower]
/\ isNewFollower' = [isNewFollower EXCEPT ![i] = TRUE]
/\ UNCHANGED <<reconfigurationVars, messageVars, currentTerm, votedFor, candidateVars, leaderVars, logVars, membershipState>>
Expand Down Expand Up @@ -1177,6 +1180,8 @@ DropIgnoredMessage(i,j,m) ==
\/ /\ leadershipState[i] /= None
\* .. and it comes from a server outside of the configuration
/\ \lnot IsInServerSet(j, i)
\* We specifically don't ignore RequestVoteRequest messages from unknown nodes
/\ m.type \notin {RequestVoteRequest}
\* OR if recipient has completed retirement and this is not a request to vote or append entries request
\* This spec requires that a retired node still helps with voting and appending entries to ensure
\* the next configurations learns that its retirement has been committed.
Expand Down
Loading