DUE TO SPAM, SIGN-UP IS DISABLED. Goto Selfserve wiki signup and request an account.
...
A new field
committedVoterStatesof typeMap<Integer, ReplicaState>is added to theLeaderStateclass. This field stores the voter states.Within the
maybeUpdateHighWatermark()method, once the leader 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 value. This method is used when constructingDescribeQuorumResponsemessages to include the committed voter set, improving observability and operational diagnostics.- In certain cases, such as quorum startup or fetching snapshots, the value of
committedVoterStatesmay not be available. In these situations, we should read the committed voters from thereplicatedLogusing theepochStartOffsetreplicatedLog#startOffset. However, since there is no information forlogEndOffset,lastFetchTimestamp, orlastCaughtUpTimestamp, these fields will return their default value of-1.
This mechanism strengthens the Raft membership model by making committed membership explicit and accessible to tooling and clients, thereby improving cluster state transparency.
...