ahuang98 commented on code in PR #18240:
URL: https://github.com/apache/kafka/pull/18240#discussion_r1899726228


##########
raft/src/main/java/org/apache/kafka/raft/KafkaRaftClient.java:
##########
@@ -2935,14 +3014,18 @@ private long pollResigned(long currentTimeMs) {
             // until either the shutdown expires or an election bumps the epoch
             stateTimeoutMs = shutdown.remainingTimeMs();
         } else if (state.hasElectionTimeoutExpired(currentTimeMs)) {
-            if (quorum.isVoter()) {
-                transitionToCandidate(currentTimeMs);
-            } else {
+//            if (quorum.isVoter()) {
+                // canElectNewLeaderAfterOldLeaderPartitioned fails if we do 
not bump epoch since it is possible
+                // that the replica ends up as follower in the same epoch.
+                // resigned(leaderId=local) -> prospective(leaderId=local) -> 
follower(leaderId=local) which is illegal
+//                transitionToProspective(quorum.epoch() + 1, currentTimeMs);
+//                transitionToCandidate(currentTimeMs);
+//            } else {

Review Comment:
   discussed offline, transitionToUnattached has existing logic for assigning 
election timeouts which we can borrow - we can just add an additional if clause 
that if we came from resignedState, assign electionTimeout to 
resignedState.electionTimeout which is effectively 0



-- 
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

Reply via email to