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