Stevo Slavic created KAFKA-3389:
-----------------------------------

             Summary: ReplicaStateMachine areAllReplicasForTopicDeleted check 
not handling well case when there are no replicas for topic
                 Key: KAFKA-3389
                 URL: https://issues.apache.org/jira/browse/KAFKA-3389
             Project: Kafka
          Issue Type: Bug
          Components: controller
    Affects Versions: 0.9.0.1
            Reporter: Stevo Slavic
            Assignee: Neha Narkhede
            Priority: Minor


Line ReplicaStateMachine.scala#L285
{noformat}
replicaStatesForTopic.forall(_._2 == ReplicaDeletionSuccessful)
{noformat}

which is return value of {{areAllReplicasForTopicDeleted}} function/check, 
probably should better be checking for
{noformat}
replicaStatesForTopic.isEmpty || replicaStatesForTopic.forall(_._2 == 
ReplicaDeletionSuccessful)
{noformat}
I noticed it because in controller logs I found entries like:
{noformat}
[2016-03-04 13:27:29,115] DEBUG [Replica state machine on controller 1]: Are 
all replicas for topic foo deleted Map() (kafka.controller.ReplicaStateMachine)
{noformat}
even though normally they look like:
{noformat}
[2016-03-04 09:33:41,036] DEBUG [Replica state machine on controller 1]: Are 
all replicas for topic foo deleted Map([Topic=foo,Partition=0,Replica=0] -> 
ReplicaDeletionStarted, [Topic=foo,Partition=0,Replica=3] -> 
ReplicaDeletionStarted, [Topic=foo,Partition=0,Replica=1] -> 
ReplicaDeletionSuccessful) (kafka.controller.ReplicaStateMachine)
{noformat}

This may cause topic deletion request never to be cleared from ZK even when 
topic has been deleted.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to