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

Guozhang Wang commented on KAFKA-1482:
--------------------------------------

The main reason seems to be that the follower broker may not be fully start up 
when the delete topic is triggered. We probably need to make sure all the 
replicas are up before triggering delete topic instead of just making sure the 
leader replica is up.

-------

    [2014-06-23 10:13:56,720] ERROR Controller 0 epoch 1 initiated state change 
of replica 2 for partition [test,0] from OfflineReplica to 
ReplicaDeletionIneligible failed (state.change.logger:103)
    java.lang.AssertionError: assertion failed: Replica 
[Topic=test,Partition=0,Replica=2] should be in the ReplicaDeletionStarted 
states before moving to ReplicaDeletionIneligible state. Instead it is in 
OfflineReplica state
        at scala.Predef$.assert(Predef.scala:91)
        at 
kafka.controller.ReplicaStateMachine.assertValidPreviousStates(ReplicaStateMachine.scala:291)
        at 
kafka.controller.ReplicaStateMachine.handleStateChange(ReplicaStateMachine.scala:180)
        at 
kafka.controller.ReplicaStateMachine$$anonfun$handleStateChanges$2.apply(ReplicaStateMachine.scala:96)
        at 
kafka.controller.ReplicaStateMachine$$anonfun$handleStateChanges$2.apply(ReplicaStateMachine.scala:96)
        at 
scala.collection.immutable.HashSet$HashSet1.foreach(HashSet.scala:123)
        at 
scala.collection.immutable.HashSet$HashTrieSet.foreach(HashSet.scala:322)
        at 
kafka.controller.ReplicaStateMachine.handleStateChanges(ReplicaStateMachine.scala:96)
        at 
kafka.controller.TopicDeletionManager$$anonfun$startReplicaDeletion$2.apply(TopicDeletionManager.scala:332)
        at 
kafka.controller.TopicDeletionManager$$anonfun$startReplicaDeletion$2.apply(TopicDeletionManager.scala:326)
        at scala.collection.immutable.Map$Map1.foreach(Map.scala:105)
        at 
kafka.controller.TopicDeletionManager.startReplicaDeletion(TopicDeletionManager.scala:326)
        at 
kafka.controller.TopicDeletionManager.kafka$controller$TopicDeletionManager$$onPartitionDeletion(TopicDeletionManager.scala:359)
        at 
kafka.controller.TopicDeletionManager$$anonfun$kafka$controller$TopicDeletionManager$$onTopicDeletion$2.apply(TopicDeletionManager.scala:305)
        at 
kafka.controller.TopicDeletionManager$$anonfun$kafka$controller$TopicDeletionManager$$onTopicDeletion$2.apply(TopicDeletionManager.scala:304)
        at scala.collection.immutable.Set$Set1.foreach(Set.scala:81)
        at 
kafka.controller.TopicDeletionManager.kafka$controller$TopicDeletionManager$$onTopicDeletion(TopicDeletionManager.scala:304)
        at 
kafka.controller.TopicDeletionManager$DeleteTopicsThread$$anonfun$doWork$1$$anonfun$apply$mcV$sp$4.apply(TopicDeletionManager.scala:423)
        at 
kafka.controller.TopicDeletionManager$DeleteTopicsThread$$anonfun$doWork$1$$anonfun$apply$mcV$sp$4.apply(TopicDeletionManager.scala:395)
        at scala.collection.immutable.Set$Set1.foreach(Set.scala:81)
        at 
kafka.controller.TopicDeletionManager$DeleteTopicsThread$$anonfun$doWork$1.apply$mcV$sp(TopicDeletionManager.scala:395)
        at 
kafka.controller.TopicDeletionManager$DeleteTopicsThread$$anonfun$doWork$1.apply(TopicDeletionManager.scala:389)
        at 
kafka.controller.TopicDeletionManager$DeleteTopicsThread$$anonfun$doWork$1.apply(TopicDeletionManager.scala:389)
        at kafka.utils.Utils$.inLock(Utils.scala:543)
        at 
kafka.controller.TopicDeletionManager$DeleteTopicsThread.doWork(TopicDeletionManager.scala:389)
        at kafka.utils.ShutdownableThread.run(ShutdownableThread.scala:60)
    [2014-06-23 10:13:56,721] ERROR Controller 0 epoch 1 initiated state change 
of replica 2 for partition [test,1] from OnlineReplica to 
ReplicaDeletionIneligible failed (state.change.logger:103)
    java.lang.AssertionError: assertion failed: Replica 
[Topic=test,Partition=1,Replica=2] should be in the ReplicaDeletionStarted 
states before moving to ReplicaDeletionIneligible state. Instead it is in 
OnlineReplica state
        at scala.Predef$.assert(Predef.scala:91)
        at 
kafka.controller.ReplicaStateMachine.assertValidPreviousStates(ReplicaStateMachine.scala:291)
        at 
kafka.controller.ReplicaStateMachine.handleStateChange(ReplicaStateMachine.scala:180)
        at 
kafka.controller.ReplicaStateMachine$$anonfun$handleStateChanges$2.apply(ReplicaStateMachine.scala:96)
        at 
kafka.controller.ReplicaStateMachine$$anonfun$handleStateChanges$2.apply(ReplicaStateMachine.scala:96)
        at 
scala.collection.immutable.HashSet$HashSet1.foreach(HashSet.scala:123)
        at 
scala.collection.immutable.HashSet$HashTrieSet.foreach(HashSet.scala:322)
        at 
kafka.controller.ReplicaStateMachine.handleStateChanges(ReplicaStateMachine.scala:96)
        at 
kafka.controller.TopicDeletionManager$$anonfun$startReplicaDeletion$2.apply(TopicDeletionManager.scala:332)
        at 
kafka.controller.TopicDeletionManager$$anonfun$startReplicaDeletion$2.apply(TopicDeletionManager.scala:326)
        at scala.collection.immutable.Map$Map1.foreach(Map.scala:105)
        at 
kafka.controller.TopicDeletionManager.startReplicaDeletion(TopicDeletionManager.scala:326)
        at 
kafka.controller.TopicDeletionManager.kafka$controller$TopicDeletionManager$$onPartitionDeletion(TopicDeletionManager.scala:359)
        at 
kafka.controller.TopicDeletionManager$$anonfun$kafka$controller$TopicDeletionManager$$onTopicDeletion$2.apply(TopicDeletionManager.scala:305)
        at 
kafka.controller.TopicDeletionManager$$anonfun$kafka$controller$TopicDeletionManager$$onTopicDeletion$2.apply(TopicDeletionManager.scala:304)
        at scala.collection.immutable.Set$Set1.foreach(Set.scala:81)
        at 
kafka.controller.TopicDeletionManager.kafka$controller$TopicDeletionManager$$onTopicDeletion(TopicDeletionManager.scala:304)
        at 
kafka.controller.TopicDeletionManager$DeleteTopicsThread$$anonfun$doWork$1$$anonfun$apply$mcV$sp$4.apply(TopicDeletionManager.scala:423)
        at 
kafka.controller.TopicDeletionManager$DeleteTopicsThread$$anonfun$doWork$1$$anonfun$apply$mcV$sp$4.apply(TopicDeletionManager.scala:395)
        at scala.collection.immutable.Set$Set1.foreach(Set.scala:81)
        at 
kafka.controller.TopicDeletionManager$DeleteTopicsThread$$anonfun$doWork$1.apply$mcV$sp(TopicDeletionManager.scala:395)
        at 
kafka.controller.TopicDeletionManager$DeleteTopicsThread$$anonfun$doWork$1.apply(TopicDeletionManager.scala:389)
        at 
kafka.controller.TopicDeletionManager$DeleteTopicsThread$$anonfun$doWork$1.apply(TopicDeletionManager.scala:389)
        at kafka.utils.Utils$.inLock(Utils.scala:543)
        at 
kafka.controller.TopicDeletionManager$DeleteTopicsThread.doWork(TopicDeletionManager.scala:389)
        at kafka.utils.ShutdownableThread.run(ShutdownableThread.scala:60)


> Transient test failures for kafka.admin.DeleteTopicTest
> -------------------------------------------------------
>
>                 Key: KAFKA-1482
>                 URL: https://issues.apache.org/jira/browse/KAFKA-1482
>             Project: Kafka
>          Issue Type: Bug
>            Reporter: Guozhang Wang
>            Assignee: Jun Rao
>              Labels: newbie
>             Fix For: 0.8.2
>
>
> A couple of test cases have timing related transient test failures:
> kafka.admin.DeleteTopicTest > testPartitionReassignmentDuringDeleteTopic 
> FAILED
>     junit.framework.AssertionFailedError: Admin path /admin/delete_topic/test 
> path not deleted even after a replica is restarted
>         at junit.framework.Assert.fail(Assert.java:47)
>         at kafka.utils.TestUtils$.waitUntilTrue(TestUtils.scala:578)
>         at 
> kafka.admin.DeleteTopicTest.verifyTopicDeletion(DeleteTopicTest.scala:333)
>         at 
> kafka.admin.DeleteTopicTest.testPartitionReassignmentDuringDeleteTopic(DeleteTopicTest.scala:197)
> kafka.admin.DeleteTopicTest > testDeleteTopicDuringAddPartition FAILED
>     junit.framework.AssertionFailedError: Replica logs not deleted after 
> delete topic is complete
>         at junit.framework.Assert.fail(Assert.java:47)
>         at junit.framework.Assert.assertTrue(Assert.java:20)
>         at 
> kafka.admin.DeleteTopicTest.verifyTopicDeletion(DeleteTopicTest.scala:338)
>         at 
> kafka.admin.DeleteTopicTest.testDeleteTopicDuringAddPartition(DeleteTopicTest.scala:216)
> kafka.admin.DeleteTopicTest > testRequestHandlingDuringDeleteTopic FAILED
>     org.scalatest.junit.JUnitTestFailedError: fails with exception
>         at 
> org.scalatest.junit.AssertionsForJUnit$class.newAssertionFailedException(AssertionsForJUnit.scala:102)
>         at 
> org.scalatest.junit.JUnit3Suite.newAssertionFailedException(JUnit3Suite.scala:142)
>         at org.scalatest.Assertions$class.fail(Assertions.scala:664)
>         at org.scalatest.junit.JUnit3Suite.fail(JUnit3Suite.scala:142)
>         at 
> kafka.admin.DeleteTopicTest.testRequestHandlingDuringDeleteTopic(DeleteTopicTest.scala:123)
>         Caused by:
>         org.scalatest.junit.JUnitTestFailedError: Test should fail because 
> the topic is being deleted
>             at 
> org.scalatest.junit.AssertionsForJUnit$class.newAssertionFailedException(AssertionsForJUnit.scala:101)
>             at 
> org.scalatest.junit.JUnit3Suite.newAssertionFailedException(JUnit3Suite.scala:142)
>             at org.scalatest.Assertions$class.fail(Assertions.scala:644)
>             at org.scalatest.junit.JUnit3Suite.fail(JUnit3Suite.scala:142)
>             at 
> kafka.admin.DeleteTopicTest.testRequestHandlingDuringDeleteTopic(DeleteTopicTest.scala:120)



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to