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)