MaoWei Tian created KAFKA-18337:
-----------------------------------
Summary: KafkaProducer Memory Leak in JMX Reporter
Key: KAFKA-18337
URL: https://issues.apache.org/jira/browse/KAFKA-18337
Project: Kafka
Issue Type: Bug
Components: clients
Reporter: MaoWei Tian
Attachments: image-2024-12-21-15-52-39-930.png
Hello!
If I use a Callback in the KafkaProducer.send() to call the
KafkaProducer.close(), the metrics will not be completely cleaned up.
{code:java}
//代码占位符
producer.send((new ProducerRecord<>("topic", "message test")),
new Callback() {
@Override
public void onCompletion(RecordMetadata metadata, Exception
exception) {
producer.close();
}
}); {code}
Using this code to close the KafkaProducer can cause the
AppInfoParser.unregisterAppInfo(JMX_PREFIX, clientId, metrics); within
KafkaProducer.close() to execute before the client.close() in Sender.run().
This leads to {{client.close()}} eventually calling
{{{}JmxReporter.reregister(){}}}, which prevents the metrics from being
completely cleaned up
!image-2024-12-21-15-52-39-930.png!
The RecordAccumulator is utilized by JMX and cannot be garbage collected,
ultimately leading to a memory leak。
--
This message was sent by Atlassian Jira
(v8.20.10#820010)