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 3210de10b58 fix bug
3210de10b58 is described below
commit 3210de10b5887af2526154d4794ad13189159198
Author: shuwenwei <[email protected]>
AuthorDate: Wed Jan 28 15:52:30 2026 +0800
fix bug
---
.../tsfile/TsFileTableSizeCacheReader.java | 2 +-
.../dataregion/utils/TableDiskUsageTest.java | 62 ++++++++++++++++++++++
2 files changed, 63 insertions(+), 1 deletion(-)
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/utils/tableDiskUsageCache/tsfile/TsFileTableSizeCacheReader.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/utils/tableDiskUsageCache/tsfile/TsFileTableSizeCacheReader.java
index c659502d05b..c4e20b2d36e 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/utils/tableDiskUsageCache/tsfile/TsFileTableSizeCacheReader.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/utils/tableDiskUsageCache/tsfile/TsFileTableSizeCacheReader.java
@@ -158,7 +158,7 @@ public class TsFileTableSizeCacheReader {
keyFileEntry.tsFileID, keyFileEntry.offset);
} else {
dataRegionContext.replaceCachedTsFileID(
- keyFileEntry.tsFileID, keyFileEntry.originTsFileID);
+ keyFileEntry.originTsFileID, keyFileEntry.tsFileID);
}
} catch (IOException e) {
closeCurrentFile();
diff --git
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/utils/TableDiskUsageTest.java
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/utils/TableDiskUsageTest.java
index d8ddc173dfe..2b1981cf2c3 100644
---
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/utils/TableDiskUsageTest.java
+++
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/utils/TableDiskUsageTest.java
@@ -101,6 +101,7 @@ public class TableDiskUsageTest extends
AbstractCompactionTest {
} finally {
reader.close();
}
+ int entryNum = 0;
for (Map.Entry<Long, TimePartitionTableSizeQueryContext>
timePartitionEntry :
context.getTimePartitionTableSizeQueryContextMap().entrySet()) {
TimePartitionTableSizeQueryContext timePartitionContext =
timePartitionEntry.getValue();
@@ -111,8 +112,10 @@ public class TableDiskUsageTest extends
AbstractCompactionTest {
Assert.assertNotEquals("table3", tableName);
Assert.assertNotEquals("table4", tableName);
Assert.assertTrue(size > 0);
+ entryNum++;
}
}
+ Assert.assertEquals(2, entryNum);
}
@Test
@@ -150,6 +153,7 @@ public class TableDiskUsageTest extends
AbstractCompactionTest {
} finally {
reader.close();
}
+ int entryNum = 0;
for (Map.Entry<Long, TimePartitionTableSizeQueryContext>
timePartitionEntry :
context.getTimePartitionTableSizeQueryContextMap().entrySet()) {
TimePartitionTableSizeQueryContext timePartitionContext =
timePartitionEntry.getValue();
@@ -160,8 +164,10 @@ public class TableDiskUsageTest extends
AbstractCompactionTest {
Assert.assertNotEquals("table3", tableName);
Assert.assertNotEquals("table4", tableName);
Assert.assertTrue(size > 10000000L);
+ entryNum++;
}
}
+ Assert.assertEquals(2, entryNum);
}
@Test
@@ -198,6 +204,7 @@ public class TableDiskUsageTest extends
AbstractCompactionTest {
} finally {
reader.close();
}
+ int entryNum = 0;
for (Map.Entry<Long, TimePartitionTableSizeQueryContext>
timePartitionEntry :
context.getTimePartitionTableSizeQueryContextMap().entrySet()) {
TimePartitionTableSizeQueryContext timePartitionContext =
timePartitionEntry.getValue();
@@ -208,8 +215,63 @@ public class TableDiskUsageTest extends
AbstractCompactionTest {
Assert.assertNotEquals("table3", tableName);
Assert.assertNotEquals("table4", tableName);
Assert.assertTrue(size < 10000000L && size > 0);
+ entryNum++;
}
}
+ Assert.assertEquals(2, entryNum);
+ }
+
+ @Test
+ public void test4() throws Exception {
+ TsFileResource resource1 = prepareFile(4);
+ Map<String, Long> tableSizeMap = new HashMap<>();
+ tableSizeMap.put("table1", 10000000L);
+ tableSizeMap.put("table2", 10000000L);
+ TableDiskUsageCache.getInstance()
+ .write(mockDataRegion.getDatabaseName(), resource1.getTsFileID(),
tableSizeMap);
+
+ TsFileResource resource2 = prepareFile(4);
+ mockTsFileManager.add(resource2, true);
+ // resource1 renamed to resource2 and recorded in cache
+ TableDiskUsageCache.getInstance()
+ .write(mockDataRegion.getDatabaseName(), resource1.getTsFileID(),
resource2.getTsFileID());
+
+ DataRegionTableSizeQueryContext context = new
DataRegionTableSizeQueryContext(false);
+ // only query table1 and table2
+ Map<String, Long> timePartitionTableSizeMap = new HashMap<>();
+ timePartitionTableSizeMap.put("table1", 0L);
+ timePartitionTableSizeMap.put("table2", 0L);
+ context.addTimePartition(0, new
TimePartitionTableSizeQueryContext(timePartitionTableSizeMap));
+ TableDiskUsageCacheReader reader =
+ new TableDiskUsageCacheReader(mockDataRegion, context, false);
+ try {
+ Assert.assertTrue(reader.prepareCacheReader(System.currentTimeMillis(),
Long.MAX_VALUE));
+ Assert.assertTrue(
+ reader.loadObjectFileTableSizeCache(System.currentTimeMillis(),
Long.MAX_VALUE));
+ Assert.assertTrue(
+ reader.prepareCachedTsFileIDKeys(System.currentTimeMillis(),
Long.MAX_VALUE));
+ Assert.assertTrue(
+ reader.checkAllFilesInTsFileManager(System.currentTimeMillis(),
Long.MAX_VALUE));
+ Assert.assertTrue(
+
reader.readCacheValueFilesAndUpdateResultMap(System.currentTimeMillis(),
Long.MAX_VALUE));
+ } finally {
+ reader.close();
+ }
+ int entryNum = 0;
+ for (Map.Entry<Long, TimePartitionTableSizeQueryContext>
timePartitionEntry :
+ context.getTimePartitionTableSizeQueryContextMap().entrySet()) {
+ TimePartitionTableSizeQueryContext timePartitionContext =
timePartitionEntry.getValue();
+ for (Map.Entry<String, Long> entry :
+ timePartitionContext.getTableSizeResultMap().entrySet()) {
+ String tableName = entry.getKey();
+ long size = entry.getValue();
+ Assert.assertNotEquals("table3", tableName);
+ Assert.assertNotEquals("table4", tableName);
+ Assert.assertEquals(10000000L, size);
+ entryNum++;
+ }
+ }
+ Assert.assertEquals(2, entryNum);
}
private TsFileResource prepareFile(int tableNum) throws IOException {