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()

Reply via email to