Feng Jiajie created FLINK-35737:
-----------------------------------

             Summary: Prevent Memory Leak by Closing 
MemoryExecutionGraphInfoStore on MiniCluster Shutdown
                 Key: FLINK-35737
                 URL: https://issues.apache.org/jira/browse/FLINK-35737
             Project: Flink
          Issue Type: Bug
          Components: Runtime / Task
    Affects Versions: 1.18.1
            Reporter: Feng Jiajie
             Fix For: 1.18.2, 1.20.0, 1.19.2


MemoryExecutionGraphInfoStore registers a ShutdownHook upon construction and 
deregisters it within its close() method.
{code:java}
public MemoryExecutionGraphInfoStore(...) {
    ...
    this.shutdownHook = ShutdownHookUtil.addShutdownHook(this, 
getClass().getSimpleName(), LOG);
}

@Override
public void close() throws IOException {
    ...
    // Remove shutdown hook to prevent resource leaks
    ShutdownHookUtil.removeShutdownHook(shutdownHook, 
getClass().getSimpleName(), LOG);
}{code}
Currently, MiniCluster instantiates a MemoryExecutionGraphInfoStore object but 
doesn't retain a reference to it, nor does it call close() during its own 
shutdown process.
{code:java}
        final DispatcherResourceManagerComponent 
dispatcherResourceManagerComponent =
                dispatcherResourceManagerComponentFactory.create(
                        ...
                        new MemoryExecutionGraphInfoStore(),  // -> new
                        ...); {code}
This behavior leads to an accumulation of ShutdownHooks when running multiple 
Flink jobs within the same local JVM. These accumulating hooks, along with 
their associated references, contribute to a memory leak.

This patch addresses the issue by ensuring that MemoryExecutionGraphInfoStore's 
close() method is invoked during MiniCluster shutdown.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to