[
https://issues.apache.org/jira/browse/KAFKA-3143?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15114526#comment-15114526
]
Jun Rao commented on KAFKA-3143:
--------------------------------
The fix is probably to transition all offline replicas to OfflineReplica state
during controller failover. Also, in OfflinePartitionLeaderSelector, we throw a
NoReplicaOnlineException if there is no live assigned replica. To be consistent
with the logic in KafkaController.removeReplicaFromIsr(), it seems that we
should just set the leader to NoLeader.
> inconsistent state in ZK when all replicas are dead
> ---------------------------------------------------
>
> Key: KAFKA-3143
> URL: https://issues.apache.org/jira/browse/KAFKA-3143
> Project: Kafka
> Issue Type: Bug
> Reporter: Jun Rao
>
> This issue can be recreated in the following steps.
> 1. Start 3 brokers, 1, 2 and 3.
> 2. Create a topic with a single partition and 2 replicas, say on broker 1 and
> 2.
> If we stop both replicas 1 and 2, depending on where the controller is, the
> leader and isr stored in ZK in the end are different.
> If the controller is on broker 3, what's stored in ZK will be -1 for leader
> and an empty set for ISR.
> On the other hand, if the controller is on broker 2 and we stop broker 1
> followed by broker 2, what's stored in ZK will be 2 for leader and 2 for ISR.
> The issue is that in the first case, the controller will call
> ReplicaStateMachine to transition to OfflineReplica, which will change the
> leader and isr. However, in the second case, the controller fails over, but
> we don't transition ReplicaStateMachine to OfflineReplica during controller
> initialization.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)