From 1ef617c520f0c3977af0e142dfe21c413b798acc Mon Sep 17 00:00:00 2001 From: Sanjay Malakar Date: Sat, 7 Mar 2026 09:43:27 +0000 Subject: [PATCH] Fix DirectoryChecker.deregisterAll to close/delete all lock resources --- .../rescon/disk/DirectoryChecker.java | 26 +++++++++++++++---- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/rescon/disk/DirectoryChecker.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/rescon/disk/DirectoryChecker.java index acffef9a0f3b6..7dd20b7f9f43e 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/rescon/disk/DirectoryChecker.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/rescon/disk/DirectoryChecker.java @@ -119,16 +119,32 @@ private Path mountOf(Path p) throws IOException { } public void deregisterAll() { - try { - for (RandomAccessFile randomAccessFile : randomAccessFileList) { + IOException first = null; + for (RandomAccessFile randomAccessFile : randomAccessFileList) { + try { randomAccessFile.close(); // it will release lock automatically after close + } catch (IOException e) { + if (first == null) { + first = e; + } else { + first.addSuppressed(e); + } } - for (File file : fileList) { + } + for (File file : fileList) { + try { FileUtils.delete(file); + } catch (IOException e) { + if (first == null) { + first = e; + } else { + first.addSuppressed(e); + } } - } catch (IOException e) { - logger.warn("Failed to deregister file lock because {}", e.getMessage(), e); + } + if (first != null) { + logger.warn("Failed to deregister one or more file locks: {}", e.getMessage(), e); } }