[ https://issues.apache.org/jira/browse/KAFKA-1503?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Jun Rao updated KAFKA-1503: --------------------------- Resolution: Fixed Fix Version/s: (was: 0.8.1.1) 0.8.2 Assignee: Jianwen Wang (was: Neha Narkhede) Status: Resolved (was: Patch Available) Thanks for the patch. It's a nice fix! +1 and committed to trunk. > all partitions are using same broker as their leader after broker is down > ------------------------------------------------------------------------- > > Key: KAFKA-1503 > URL: https://issues.apache.org/jira/browse/KAFKA-1503 > Project: Kafka > Issue Type: Bug > Components: controller > Affects Versions: 0.8.0, 0.8.1.1 > Environment: 0.8.1.1 > Reporter: Jianwen Wang > Assignee: Jianwen Wang > Labels: patch > Fix For: 0.8.2 > > Attachments: kafka1503.patch > > > The current leader selection always pick the first live broker in ISR when > the current leader broker is down. Since the list of liveBrokerInIsr is not > evenly distributed. As time goes on, all the partitions will use only one > broker as its leader. > I figured out a fix which is to use the first live broker in replica list > which is also in ISR list. Since the liveAssignedReplicas is evenly > distributed across brokers, all the partitions will be evenly distributed in > the live brokers in ISR. > The fix is: > kafka-0.8.1.1-src/core/src/main/scala/kafka/controller/PartitionLeaderSelector.scala > 71 71 > case false => > 72 > - val newLeader = liveBrokersInIsr.head > 72 > + val liveReplicasInIsr = liveAssignedReplicas.filter(r => > liveBrokersInIsr.contains(r)) > 73 > + val newLeader = liveReplicasInIsr.head -- This message was sent by Atlassian JIRA (v6.2#6252)