You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@kafka.apache.org by "Jun Rao (JIRA)" <ji...@apache.org> on 2014/04/14 00:15:17 UTC

[jira] [Commented] (KAFKA-1391) transient unit test failure in DeleteTopicTest.testPreferredReplicaElectionDuringDeleteTopic

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

Jun Rao commented on KAFKA-1391:
--------------------------------

KAFKA-1363 doesn't quite fix the hanging issue when shutting down deleteTopicsThread.  This thread does the following. During the shutdown, if the shutdown logic will first unblock awaitTopicDeletionNotification() and then mark isRunning as false. However, if the marking happens after the checking of isRunning in the deleteTopicsThread, it will block forever. 

    override def doWork() {
      awaitTopicDeletionNotification()

      if(!isRunning.get)
        return

      inLock(controllerContext.controllerLock) {


> transient unit test failure in DeleteTopicTest.testPreferredReplicaElectionDuringDeleteTopic
> --------------------------------------------------------------------------------------------
>
>                 Key: KAFKA-1391
>                 URL: https://issues.apache.org/jira/browse/KAFKA-1391
>             Project: Kafka
>          Issue Type: Bug
>    Affects Versions: 0.8.2
>            Reporter: Jun Rao
>
> The test hang due to the following deadlock.
> "Test worker" prio=5 tid=7fd40c0b2800 nid=0x114ebd000 waiting on condition [114eb9000]
>    java.lang.Thread.State: WAITING (parking)
>         at sun.misc.Unsafe.park(Native Method)
>         - parking to wait for  <7f40b2aa0> (a java.util.concurrent.CountDownLatch$Sync)
>         at java.util.concurrent.locks.LockSupport.park(LockSupport.java:156)
>         at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:811)
>         at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedInterruptibly(AbstractQueuedSynchronizer.java:969)
>         at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1281)
>         at java.util.concurrent.CountDownLatch.await(CountDownLatch.java:207)
>         at kafka.utils.ShutdownableThread.shutdown(ShutdownableThread.scala:36)
>         at kafka.controller.TopicDeletionManager.shutdown(TopicDeletionManager.scala:105)
>         at kafka.controller.KafkaController$$anonfun$onControllerResignation$1.apply$mcV$sp(KafkaController.scala:344)
>         at kafka.controller.KafkaController$$anonfun$onControllerResignation$1.apply(KafkaController.scala:340)
>         at kafka.controller.KafkaController$$anonfun$onControllerResignation$1.apply(KafkaController.scala:340)
>         at kafka.utils.Utils$.inLock(Utils.scala:537)
>         at kafka.controller.KafkaController.onControllerResignation(KafkaController.scala:340)
>         at kafka.controller.KafkaController$$anonfun$shutdown$1.apply$mcV$sp(KafkaController.scala:647)
>         at kafka.controller.KafkaController$$anonfun$shutdown$1.apply(KafkaController.scala:645)
>         at kafka.controller.KafkaController$$anonfun$shutdown$1.apply(KafkaController.scala:645)
>         at kafka.utils.Utils$.inLock(Utils.scala:537)
>         at kafka.controller.KafkaController.shutdown(KafkaController.scala:645)
>         at kafka.server.KafkaServer$$anonfun$shutdown$9.apply$mcV$sp(KafkaServer.scala:242)
>         at kafka.utils.Utils$.swallow(Utils.scala:166)
>         at kafka.utils.Logging$class.swallowWarn(Logging.scala:92)
>         at kafka.utils.Utils$.swallowWarn(Utils.scala:45)
>         at kafka.utils.Logging$class.swallow(Logging.scala:94)
>         at kafka.utils.Utils$.swallow(Utils.scala:45)
>         at kafka.server.KafkaServer.shutdown(KafkaServer.scala:242)
>         at kafka.admin.DeleteTopicTest.testPreferredReplicaElectionDuringDeleteTopic(DeleteTopicTest.scala:163)
> "delete-topics-thread" prio=5 tid=7fd409ad2000 nid=0x11b0c2000 waiting on condition [11b0c1000]
>    java.lang.Thread.State: WAITING (parking)
>         at sun.misc.Unsafe.park(Native Method)
>         - parking to wait for  <7f40a7048> (a java.util.concurrent.locks.ReentrantLock$NonfairSync)
>         at java.util.concurrent.locks.LockSupport.park(LockSupport.java:156)
>         at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:811)
>         at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(AbstractQueuedSynchronizer.java:842)
>         at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:1178)
>         at java.util.concurrent.locks.ReentrantLock$NonfairSync.lock(ReentrantLock.java:186)
>         at java.util.concurrent.locks.ReentrantLock.lock(ReentrantLock.java:262)
>         at kafka.utils.Utils$.inLock(Utils.scala:535)
>         at kafka.controller.TopicDeletionManager$DeleteTopicsThread.doWork(TopicDeletionManager.scala:376)
>         at kafka.utils.ShutdownableThread.run(ShutdownableThread.scala:51)



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