Satish Duggana created KAFKA-4741:
-------------------------------------
Summary: Memory leak in RecordAccumulator#append
Key: KAFKA-4741
URL: https://issues.apache.org/jira/browse/KAFKA-4741
Project: Kafka
Issue Type: Bug
Components: clients
Reporter: Satish Duggana
RecordAccumulator creates a `ByteBuffer` from free memory pool. This should be
deallocated when invocations encounter an exception or throwing any exceptions.
I added todo comment lines in the below code for cases to deallocate that
buffer.
{code:title=RecordProducer.java|borderStyle=solid}
ByteBuffer buffer = free.allocate(size, maxTimeToBlock);
synchronized (dq) {
// Need to check if producer is closed again after grabbing the
dequeue lock.
if (closed)
// todo buffer should be cleared.
throw new IllegalStateException("Cannot send after the
producer is closed.");
// todo buffer should be cleared up when tryAppend throws an
Exception
RecordAppendResult appendResult = tryAppend(timestamp, key,
value, callback, dq);
if (appendResult != null) {
// Somebody else found us a batch, return the one we waited
for! Hopefully this doesn't happen often...
free.deallocate(buffer);
return appendResult;
}
{code}
I will raise PR for the same soon.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)