ahuang98 commented on code in PR #18240: URL: https://github.com/apache/kafka/pull/18240#discussion_r1895926505
########## raft/src/main/java/org/apache/kafka/raft/QuorumState.java: ########## @@ -39,40 +39,47 @@ * how they are triggered: * * Resigned transitions to: - * Unattached: After learning of a new election with a higher epoch - * Candidate: After expiration of the election timeout - * Follower: After discovering a leader with an equal or larger epoch + * Unattached: After learning of a new election with a higher epoch + * Prospective: After expiration of the election timeout + * Follower: After discovering a leader with an equal or larger epoch * * Unattached transitions to: - * Unattached: After learning of a new election with a higher epoch or after giving a binding vote - * Candidate: After expiration of the election timeout - * Follower: After discovering a leader with an equal or larger epoch + * Unattached: After learning of a new election with a higher epoch or after giving a binding vote + * Prospective: After expiration of the election timeout + * Follower: After discovering a leader with an equal or larger epoch + * + * Prospective transitions to: + * Unattached: After learning of an election with a higher epoch, or node did not have last + * known leader and loses/times out election + * Candidate: After receiving a majority of PreVotes granted + * Follower: After discovering a leader with a larger epoch, or node had a last known leader + * and loses/times out election * * Candidate transitions to: - * Unattached: After learning of a new election with a higher epoch - * Candidate: After expiration of the election timeout - * Leader: After receiving a majority of votes + * Unattached: After learning of a new election with a higher epoch + * Prospective: After expiration of the election timeout or loss of election + * Leader: After receiving a majority of votes * * Leader transitions to: - * Unattached: After learning of a new election with a higher epoch - * Resigned: When shutting down gracefully + * Unattached: After learning of a new election with a higher epoch + * Resigned: When shutting down gracefully * * Follower transitions to: - * Unattached: After learning of a new election with a higher epoch - * Candidate: After expiration of the fetch timeout - * Follower: After discovering a leader with a larger epoch + * Unattached: After learning of a new election with a higher epoch + * Prospective: After expiration of the fetch timeout + * Follower: After discovering a leader with a larger epoch * - * Observers follow a simpler state machine. The Voted/Candidate/Leader/Resigned + * Observers follow a simpler state machine. The Prospective/Candidate/Leader/Resigned Review Comment: Found existing test which checks that observers with ids can vote - https://github.com/apache/kafka/blob/e30edb3eff0d2794854fa270ee1a4514dd983d6c/raft/src/test/java/org/apache/kafka/raft/QuorumStateTest.java#L1511, added as part of KAFKA-16526, so I've removed `Voted` for now (vs translating to `UnattachedVoted`) -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: jira-unsubscr...@kafka.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org