From 1ec131f3521247535335f66b2b371bdec05dce07 Mon Sep 17 00:00:00 2001 From: Peng Junzhi <201250214@smail.nju.edu.cn> Date: Tue, 13 May 2025 22:09:13 +0800 Subject: [PATCH] fix thread leak --- .../protocol/pipeconsensus/PipeConsensusReceiver.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/protocol/pipeconsensus/PipeConsensusReceiver.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/protocol/pipeconsensus/PipeConsensusReceiver.java index d01d7315b95cb..54214a70b16ce 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/protocol/pipeconsensus/PipeConsensusReceiver.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/protocol/pipeconsensus/PipeConsensusReceiver.java @@ -1068,6 +1068,16 @@ public synchronized void handleExit() { tsFileWriterCheckerFuture.cancel(false); tsFileWriterCheckerFuture = null; } + // shutdown executor + scheduledTsFileWriterCheckerPool.shutdownNow(); + try { + if (!scheduledTsFileWriterCheckerPool.awaitTermination(30, TimeUnit.SECONDS)) { + LOGGER.warn("TsFileChecker did not terminate within {}s", 30); + } + } catch (InterruptedException e) { + LOGGER.warn("TsFileChecker Thread {} still doesn't exit after 30s", consensusPipeName); + Thread.currentThread().interrupt(); + } // Clear the tsFileWriters, receiverBuffer and receiver base dirs requestExecutor.clear(false, true); LOGGER.info("Receiver-{} exit successfully.", consensusPipeName.toString());