DUE TO SPAM, SIGN-UP IS DISABLED. Goto Selfserve wiki signup and request an account.
...
Proposed Changes
Raft State Tracking
This proposal introduces a new committed voter set tracking mechanism within the LeaderState to accurately represent the last committed quorum membership.
A new field
committedVoterStatesof typeMap<Integer, ReplicaState>is added to theLeaderStateclass. This field stores the snapshot of the voter states that have been durably committed in the Raft log.Within the
maybeCommitToLeaderStatemaybeUpdateHighWatermark()method (or equivalent commit processing logic), once the commit index advances and a quorum is confirmed for the new offsetleader advances advance the HighWatermark, thecommittedVoterStatesmap is updated to a copy of the current activecurrentVoterStates. This ensures the committed voter set reflects the durable state of membership at the last committed log entry.The distinction between
currentVoterStates(potentially changing during ongoing elections or reconfigurations) andcommittedVoterStates(stable, committed membership) enables clear separation of transient membership changes from those that are confirmed and durable.An accessor method
committedVoterStates()is provided onLeaderStateto expose this snapshotvalue. This method is used when constructingDescribeQuorumResponsemessages to include the committed voter set, improving observability and operational diagnostics.- In some cases, like quorum startup and fetch snapshots, we can't get the value of committedVoterStates, at that case, we should read committed voter from replicatedLog with epochStartOffset but there is no information for logEndOffset, lastFetchTimestamp and lastCaughtUpTimestamp so they will return default value(-1).
This mechanism strengthens the Raft membership model by making committed membership explicit and accessible to tooling and clients, thereby improving cluster state transparency.
Compatibility, Deprecation, and Migration Plan
...