Jun Rao created KAFKA-574:
-----------------------------

             Summary: KafkaController unnecessarily reads leaderAndIsr info 
from ZK
                 Key: KAFKA-574
                 URL: https://issues.apache.org/jira/browse/KAFKA-574
             Project: Kafka
          Issue Type: Bug
          Components: core
    Affects Versions: 0.8
            Reporter: Jun Rao
            Priority: Blocker


KafkaController calls updateLeaderAndIsrCache() in onBrokerFailure(). This is 
unnecessary since in onBrokerFailure(), we will make leader and isr change 
anyway so there is no need to first read that information from ZK. Latency is 
critical in onBrokerFailure() since it determines how quickly a leader can be 
made online.

Similarly, updateLeaderAndIsrCache() is called in onBrokerStartup() 
unnecessarily. In this case, the controller does not change the leader or the 
isr. It just needs to send the current leader and the isr info to the newly 
started broker. We already cache leader in the controller. Isr in theory could 
change any time by the leader. So, reading from ZK doesn't guarantee that we 
can get the latest isr anyway. Instead, we just need to get the isr last 
selected by the controller (which can be cached together with the leader in the 
controller). If the leader epoc in a broker is at or larger than the epoc in 
the leaderAndIsr request, the broker can just ignore it. Otherwise, the leader 
and the isr selected by the controller should be used. 

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to