ahuang98 commented on code in PR #19747:
URL: https://github.com/apache/kafka/pull/19747#discussion_r2098643293
##########
raft/src/main/java/org/apache/kafka/raft/KafkaRaftClient.java:
##########
@@ -1020,24 +1020,14 @@ private void maybeHandleElectionLoss(NomineeState
state, long currentTimeMs) {
if (state instanceof CandidateState candidate) {
if (candidate.epochElection().isVoteRejected() &&
!candidate.isBackingOff()) {
logger.info(
- "Insufficient remaining votes to become leader. We will
backoff before retrying election again. " +
- "Current epoch election state is {}.",
+ "Insufficient remaining votes to become leader. Candidate
will wait the remaining election " +
+ "timeout ({}) before transitioning back to
Prospective. Current epoch election state is {}.",
+ candidate.remainingElectionTimeMs(currentTimeMs),
candidate.epochElection()
);
- // Go immediately to a random, exponential backoff. The
backoff starts low to prevent
- // needing to wait the entire election timeout when the vote
result has already been
- // determined. The randomness prevents the next election from
being gridlocked with
- // another nominee due to timing. The exponential aspect
limits epoch churn when the
- // replica has failed multiple elections in succession.
- candidate.startBackingOff(
- currentTimeMs,
- RaftUtil.binaryExponentialElectionBackoffMs(
- quorumConfig.electionBackoffMaxMs(),
- RETRY_BACKOFF_BASE_MS,
- candidate.retries(),
- random
- )
- );
+ // Mark that the candidate is now backing off. After election
timeout expires the candidate will
+ // transition back to prospective
+ candidate.startBackingOff();
Review Comment:
I'll go with the latter option - I'm a bit reluctant to change the return
type of the recordVote methods since it would affect a lot of existing tests.
--
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: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]