This is an automated email from the ASF dual-hosted git repository.

shuwenwei pushed a commit to branch table_disk_usage_statistics_with_cache
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to 
refs/heads/table_disk_usage_statistics_with_cache by this push:
     new 73054687204 add comments
73054687204 is described below

commit 73054687204faed90591684ddd0b63bd3f9ba622
Author: shuwenwei <[email protected]>
AuthorDate: Mon Jan 26 15:45:21 2026 +0800

    add comments
---
 .../utils/tableDiskUsageCache/TableDiskUsageCache.java       | 12 ++++++++----
 .../tsfile/TsFileTableDiskUsageCacheWriter.java              |  4 ++--
 2 files changed, 10 insertions(+), 6 deletions(-)

diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/utils/tableDiskUsageCache/TableDiskUsageCache.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/utils/tableDiskUsageCache/TableDiskUsageCache.java
index c0042ff372c..30d9fec327b 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/utils/tableDiskUsageCache/TableDiskUsageCache.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/utils/tableDiskUsageCache/TableDiskUsageCache.java
@@ -45,9 +45,10 @@ import java.util.concurrent.TimeUnit;
 public class TableDiskUsageCache {
   protected static final Logger LOGGER = 
LoggerFactory.getLogger(TableDiskUsageCache.class);
   protected final BlockingQueue<Operation> queue = new LinkedBlockingQueue<>();
+  // regionId -> writer mapping
   protected final Map<Integer, DataRegionTableSizeCacheWriter> writerMap = new 
HashMap<>();
   protected final ScheduledExecutorService scheduledExecutorService;
-  private int processedOperationCount = 0;
+  private int processedOperationCountSinceLastPeriodicCheck = 0;
   protected volatile boolean failedToRecover = false;
 
   protected TableDiskUsageCache() {
@@ -68,9 +69,9 @@ public class TableDiskUsageCache {
           Operation operation = queue.poll(1, TimeUnit.SECONDS);
           if (operation != null) {
             operation.apply(this);
-            processedOperationCount++;
+            processedOperationCountSinceLastPeriodicCheck++;
           }
-          if (operation == null || processedOperationCount % 1000 == 0) {
+          if (operation == null || 
processedOperationCountSinceLastPeriodicCheck % 1000 == 0) {
             performPeriodicMaintenance();
           }
         } catch (InterruptedException e) {
@@ -87,7 +88,7 @@ public class TableDiskUsageCache {
   private void performPeriodicMaintenance() {
     checkAndMayCloseIdleWriter();
     compactIfNecessary(TimeUnit.SECONDS.toMillis(1));
-    processedOperationCount = 0;
+    processedOperationCountSinceLastPeriodicCheck = 0;
   }
 
   /**
@@ -259,6 +260,7 @@ public class TableDiskUsageCache {
           return;
         }
         writer.increaseActiveReaderNum();
+        // Flush buffered writes to ensure readers observe a consistent 
snapshot
         writer.flush();
         TsFileTableSizeCacheReader tsFileTableSizeCacheReader =
             readTsFileCache ? 
tableDiskUsageCache.createTsFileCacheReader(writer, regionId) : null;
@@ -290,6 +292,7 @@ public class TableDiskUsageCache {
               return writer;
             }
             writer.decreaseActiveReaderNum();
+            // Complete pending remove when the last reader exits
             if (writer.getRemovedFuture() != null) {
               writer.close();
               writer.getRemovedFuture().complete(null);
@@ -377,6 +380,7 @@ public class TableDiskUsageCache {
           regionId,
           (k, writer) -> {
             if (writer.getActiveReaderNum() > 0) {
+              // If there are active readers, defer removal until all readers 
finish
               writer.setRemovedFuture(future);
               return writer;
             }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/utils/tableDiskUsageCache/tsfile/TsFileTableDiskUsageCacheWriter.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/utils/tableDiskUsageCache/tsfile/TsFileTableDiskUsageCacheWriter.java
index 6c0e4ff72a3..772b93732ef 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/utils/tableDiskUsageCache/tsfile/TsFileTableDiskUsageCacheWriter.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/utils/tableDiskUsageCache/tsfile/TsFileTableDiskUsageCacheWriter.java
@@ -283,8 +283,8 @@ public class TsFileTableDiskUsageCacheWriter extends 
AbstractTableSizeCacheWrite
   }
 
   public void syncIfNecessary() throws IOException {
-    if (System.currentTimeMillis() - Math.max(lastWriteTimestamp, 
lastSyncTimestamp)
-        >= TimeUnit.MINUTES.toMillis(10)) {
+    if (lastWriteTimestamp > lastSyncTimestamp
+        && System.currentTimeMillis() - lastSyncTimestamp >= 
TimeUnit.MINUTES.toMillis(10)) {
       sync();
     }
   }

Reply via email to