[ https://issues.apache.org/jira/browse/KAFKA-19148?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18008542#comment-18008542 ]
Calvin Liu commented on KAFKA-19148: ------------------------------------ [~emanuelmena] The error message is incorrect. It is fixed in KAFKA-19212(included in 4.1). The KRaft controller will generate the UNCLEAN election message after any partition record changes. It does a simple check(which is wrong) by comparing the new leader with the previous ISR {code:java} public static boolean electionWasClean(int newLeader, int[] prev_isr) { return newLeader == NO_LEADER || Replicas.contains(prev_isr, newLeader); } {code} Since the new leader and ISR are changed in the same update, where the prev_isr=(5, 7, 12) and the new leader is 0, the controller will log the UNCLEAN message. However, because the replica 0 is actually a member of the ISR already, it is a clean election. > Potential Unclean Leader Election in KRaft Despite > unclean.leader.election.enable=false > --------------------------------------------------------------------------------------- > > Key: KAFKA-19148 > URL: https://issues.apache.org/jira/browse/KAFKA-19148 > Project: Kafka > Issue Type: Bug > Components: controller > Affects Versions: 3.9.0, 4.0.0 > Reporter: Julian Bergner > Assignee: Azhar Ahmed > Priority: Critical > Attachments: Readme_Kraft.md, Readme_Zookeeper.md, > docker-compose_kraft.yml, docker-compose_zookeeper.yml > > > *Issue Summary:* > We're observing unclean leader election even though > {{{}unclean.leader.election.enable=false{}}}. > *Scenario:* > During a partition reassignment, if we promote a non-ISR broker to leader and > simultaneously remove the current leader from the ISR, Kafka still elects a > new leader from outside the ISR. This behavior contradicts the expected > behavior when unclean leader election is explicitly disabled. > *Details:* > * *Original ISR:* [1, 2] > * *New ISR after reassignment:* [3, 2] > *Kafka Versions Tested:* > * Kafka 4.0.0 (KRaft mode) > * Kafka 3.9.0 (Kraft mode) > * Kafka 3.9.0 (Zookeeper mode) > *Observation:* > * The behaviour differs between the two modes. > * In Kraft, unclean leader election occurred, which should not happen with > the config set to {{{}false{}}}. > * In Zookeeper no unclean leader election occurred. > *Attachments:* > Docker Compose files and reproduction steps for both: > * Kafka 4.0.0 (KRaft) > * Kafka 3.9.0 (Zookeeper) -- This message was sent by Atlassian Jira (v8.20.10#820010)