[
https://issues.apache.org/jira/browse/KAFKA-1503?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Jianwen Wang updated KAFKA-1503:
--------------------------------
Attachment: kafka1503.patch
> 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: Neha Narkhede
> Labels: patch
> Fix For: 0.8.1.1
>
> 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)