This is an automated email from the ASF dual-hosted git repository. shuwenwei pushed a commit to branch fix/disk-usage-read-lock-leak in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 60d63b909c31f0b10c956402a655009a9b59e17d Author: shuwenwei <[email protected]> AuthorDate: Fri Oct 9 14:46:09 2026 +0800 Fix read lock leak in disk usage statistics --- .../storageengine/dataregion/utils/DiskUsageStatisticUtil.java | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/utils/DiskUsageStatisticUtil.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/utils/DiskUsageStatisticUtil.java index 982c6d56aff..6aaf96e42b4 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/utils/DiskUsageStatisticUtil.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/utils/DiskUsageStatisticUtil.java @@ -100,9 +100,9 @@ public abstract class DiskUsageStatisticUtil implements Closeable { if (!resource.isClosed()) { continue; } - resource.readLock(); + FileReaderManager.getInstance().increaseFileReaderReference(resource, true); if (resource.isDeleted() || !resource.isClosed()) { - resource.readUnlock(); + FileReaderManager.getInstance().decreaseFileReaderReference(resource, true); continue; } resourcesWithReadLock.add(resource); @@ -118,7 +118,7 @@ public abstract class DiskUsageStatisticUtil implements Closeable { return; } for (TsFileResource resource : resourcesWithReadLock) { - resource.readUnlock(); + FileReaderManager.getInstance().decreaseFileReaderReference(resource, true); } resourcesWithReadLock = null; } @@ -127,10 +127,9 @@ public abstract class DiskUsageStatisticUtil implements Closeable { TsFileResource tsFileResource = iterator.next(); if (tsFileResource.isDeleted() || calculateWithoutOpenFile(tsFileResource)) { iterator.remove(); - tsFileResource.readUnlock(); + FileReaderManager.getInstance().decreaseFileReaderReference(tsFileResource, true); return; } - FileReaderManager.getInstance().increaseFileReaderReference(tsFileResource, true); try { TsFileSequenceReader reader = FileReaderManager.getInstance()
