[ https://issues.apache.org/jira/browse/KAFKA-4741?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Satish Duggana updated KAFKA-4741: ---------------------------------- Summary: Memory leak in RecordAccumulator.append (was: Memory leak in RecordAccumulator#append) > 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)