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