Joel Koshy created KAFKA-702: -------------------------------- Summary: Livelock between request handler/processor threads Key: KAFKA-702 URL: https://issues.apache.org/jira/browse/KAFKA-702 Project: Kafka Issue Type: Bug Affects Versions: 0.8 Reporter: Joel Koshy Priority: Blocker Fix For: 0.8
We have seen this a couple of times in the past few days in a test cluster. The processor thread enqueues requests into the request queue and dequeues responses from the response queue. The reverse is true for the request handler thread. This leads to the following livelock situation (all the processor/request handler threads show this in the thread-dump): "kafka-processor-10251-7" prio=10 tid=0x00007f4a0c3c9800 nid=0x4c39 waiting on condition [0x00007f46f698e000] java.lang.Thread.State: WAITING (parking) at sun.misc.Unsafe.park(Native Method) - parking to wait for <0x00007f48c9dd2698> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:158) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987) at java.util.concurrent.ArrayBlockingQueue.put(ArrayBlockingQueue.java:252) at kafka.network.RequestChannel.sendRequest(RequestChannel.scala:107) at kafka.network.Processor.read(SocketServer.scala:321) at kafka.network.Processor.run(SocketServer.scala:231) at java.lang.Thread.run(Thread.java:619) "kafka-request-handler-7" daemon prio=10 tid=0x00007f4a0c57f000 nid=0x4c47 waiting on condition [0x00007f46f5b80000] java.lang.Thread.State: WAITING (parking) at sun.misc.Unsafe.park(Native Method) - parking to wait for <0x00007f48c9dd6348> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:158) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987) at java.util.concurrent.ArrayBlockingQueue.put(ArrayBlockingQueue.java:252) at kafka.network.RequestChannel.sendResponse(RequestChannel.scala:112) at kafka.server.KafkaApis.handleProducerRequest(KafkaApis.scala:198) at kafka.server.KafkaApis.handle(KafkaApis.scala:58) at kafka.server.KafkaRequestHandler.run(KafkaRequestHandler.scala:41) at java.lang.Thread.run(Thread.java:619) -- 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