You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jira@kafka.apache.org by "lightzhao (Jira)" <ji...@apache.org> on 2025/11/10 02:09:01 UTC
[jira] [Created] (KAFKA-19874) Fix resource leak in TopicBasedRemoteLogMetadataManager initialization
lightzhao created KAFKA-19874:
---------------------------------
Summary: Fix resource leak in TopicBasedRemoteLogMetadataManager initialization
Key: KAFKA-19874
URL: https://issues.apache.org/jira/browse/KAFKA-19874
Project: Kafka
Issue Type: Bug
Components: core
Affects Versions: 4.1.0
Reporter: lightzhao
## Problem
There is a resource leak in the TopicBasedRemoteLogMetadataManager initialization
process. If ProducerManager is created successfully but ConsumerManager creation
fails, the ProducerManager instance is not properly closed, leading to resource
leaks (e.g., unclosed Kafka producer, threads, network connections).
## Current Code (Problematic)
lock.writeLock().lock();
try {
producerManager = new ProducerManager(rlmmConfig, partitioner);
consumerManager = new ConsumerManager(rlmmConfig, remotePartitionMetadataStore, partitioner, time);
consumerManager.startConsumerThread();
// If exception occurs here, producerManager is not closed
} catch (Exception e) {
log.error("Encountered error while initializing producer/consumer", e);
initializationFailed = true;
} finally {
lock.writeLock().unlock();
}## Solution
Use temporary variables to hold manager instances and only assign to instance
variables after successful initialization. Clean up temporary resources in the
catch block if any exception occurs.
## Impact
- Prevents resource leaks during initialization failures
- Ensures proper cleanup of Kafka clients
- Improves system stability and resource management
--
This message was sent by Atlassian Jira
(v8.20.10#820010)