Jianwen Wang created KAFKA-1503:
-----------------------------------

             Summary: 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.1.1, 0.8.0
         Environment: 0.8.1.1 
            Reporter: Jianwen Wang
            Assignee: Neha Narkhede


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)

Reply via email to