[ 
https://issues.apache.org/jira/browse/KAFKA-532?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13485030#comment-13485030
 ] 

Jun Rao commented on KAFKA-532:
-------------------------------

The purpose of controller epoc is to prevent an older controller from 
overriding the data already updated by a newer controller. What we can do is 
that when a controller wants to update leaderAndIsr, it first checks and makes 
sure that the controller epoc stored in the path is less than or equal to the 
current controller epoc. Otherwise, the controller won't update the path. This 
way, the controller epoc associated with leaderAndIsr is only updated when it's 
truly needed, i.e., when the controller wants to update the leader or the isr. 
So we don't need to rewrite leaderAndIsr during controller failover. When 
sending leaderAndIsr requests, we just need to send the controller epoc stored 
in the leaderAndIsr path.
                
> Multiple controllers can co-exist during soft failures
> ------------------------------------------------------
>
>                 Key: KAFKA-532
>                 URL: https://issues.apache.org/jira/browse/KAFKA-532
>             Project: Kafka
>          Issue Type: Bug
>    Affects Versions: 0.8
>            Reporter: Neha Narkhede
>            Assignee: Neha Narkhede
>            Priority: Blocker
>              Labels: bugs
>         Attachments: kafka-532-v1.patch, kafka-532-v2.patch
>
>   Original Estimate: 48h
>  Remaining Estimate: 48h
>
> If the current controller experiences an intermittent soft failure (GC pause) 
> in the middle of leader election or partition reassignment, a new controller 
> might get elected and start communicating new state change decisions to the 
> brokers. After recovering from the soft failure, the old controller might 
> continue sending some stale state change decisions to the brokers, resulting 
> in unexpected failures. We need to introduce a controller generation id that 
> increments with controller election. The brokers should reject any state 
> change requests by a controller with an older generation id.

--
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