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 {

Reply via email to