Hi Iam using kafka async producer, after publisher 1M+ messages, all my producer threads get hung and not doing any thing. Following is my thread dump.
"KafkaMessageWorker-georrlite-2" #70 daemon prio=5 os_prio=0 tid=0x00007f85d00cc800 nid=0x56b4 waiting on condition [0x00007f859faf9000] java.lang.Thread.State: WAITING (parking) at sun.misc.Unsafe.park(Native Method) - parking to wait for <0x0000000664f444f8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039) at org.apache.kafka.clients.producer.internals.BufferPool.allocate(BufferPool.java:137) at org.apache.kafka.clients.producer.internals.RecordAccumulator.append(RecordAccumulator.java:157) at org.apache.kafka.clients.producer.KafkaProducer.send(KafkaProducer.java:338) "KafkaMessageWorker-georrlite-1" #68 daemon prio=5 os_prio=0 tid=0x00007f85d00c5800 nid=0x56b3 waiting on condition [0x00007f859fbfa000] java.lang.Thread.State: WAITING (parking) at sun.misc.Unsafe.park(Native Method) - parking to wait for <0x0000000664eb4d10> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039) at org.apache.kafka.clients.producer.internals.BufferPool.allocate(BufferPool.java:137) at org.apache.kafka.clients.producer.internals.RecordAccumulator.append(RecordAccumulator.java:157) at org.apache.kafka.clients.producer.KafkaProducer.send(KafkaProducer.java:338) Is there any parameters i need to tweek or is it expected ? When i looked at the code, there is a wait on condition (BufferPool.java:137#moreMemory.await()), i am not getting clue when and how will this lock is unlocked(or signaled). -SK