radai rosenblatt created KAFKA-4228:
---------------------------------------

             Summary: Sender thread death leaves KafkaProducer in a bad state
                 Key: KAFKA-4228
                 URL: https://issues.apache.org/jira/browse/KAFKA-4228
             Project: Kafka
          Issue Type: Bug
          Components: clients
    Affects Versions: 0.10.0.1
            Reporter: radai rosenblatt


a KafkaProducer's Sender thread may die:
{noformat}
2016/09/28 00:28:01.065 ERROR [KafkaThread] [kafka-producer-network-thread | 
mm_ei-lca1_uniform] [kafka-mirror-maker] [] Uncaught exception in 
kafka-producer-network-thread | mm_ei-lca1_uni
java.lang.OutOfMemoryError: Java heap space
       at java.nio.HeapByteBuffer.<init>(HeapByteBuffer.java:57) ~[?:1.8.0_40]
       at java.nio.ByteBuffer.allocate(ByteBuffer.java:335) ~[?:1.8.0_40]
       at 
org.apache.kafka.common.requests.RequestSend.serialize(RequestSend.java:35) 
~[kafka-clients-0.9.0.666.jar:?]
       at 
org.apache.kafka.common.requests.RequestSend.<init>(RequestSend.java:29) 
~[kafka-clients-0.9.0.666.jar:?]
       at 
org.apache.kafka.clients.producer.internals.Sender.produceRequest(Sender.java:355)
 ~[kafka-clients-0.9.0.666.jar:?]
       at 
org.apache.kafka.clients.producer.internals.Sender.createProduceRequests(Sender.java:337)
 ~[kafka-clients-0.9.0.666.jar:?]
       at 
org.apache.kafka.clients.producer.internals.Sender.run(Sender.java:211) 
~[kafka-clients-0.9.0.666.jar:?]
       at 
org.apache.kafka.clients.producer.internals.Sender.run(Sender.java:134) 
~[kafka-clients-0.9.0.666.jar:?]
       at java.lang.Thread.run(Thread.java:745) [?:1.8.0_40]
{noformat}

which leaves the producer in a bad state. in this state, a call to flush(), for 
example, will hang indefinitely as the sender thread is not around to flush 
batches but theyve not been aborted.

even worse, this can happen in MirrorMaker just before a rebalance, at which 
point MM will just block indefinitely during a rebalance and the end result is 
unowned topic partitions.

a dead sender thread should result in closing the producer, and a closed 
producer should result in MirrorMaker death.




--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to