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)

Reply via email to