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

jiangtian pushed a commit to branch dev/1.3
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/dev/1.3 by this push:
     new 64b43e79201 fix bug (#14247)
64b43e79201 is described below

commit 64b43e79201eaf8c8be97eb0d82e7cb90c35215e
Author: shuwenwei <[email protected]>
AuthorDate: Mon Dec 2 15:59:42 2024 +0800

    fix bug (#14247)
---
 .../db/storageengine/dataregion/DataRegion.java    |  3 --
 .../dataregion/tsfile/TsFileManager.java           | 11 +++++++-
 .../cross/InsertionCrossSpaceCompactionTest.java   | 32 ++++++++++++++++++++++
 3 files changed, 42 insertions(+), 4 deletions(-)

diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/DataRegion.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/DataRegion.java
index 4721d27eff7..213f25cf000 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/DataRegion.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/DataRegion.java
@@ -3053,9 +3053,6 @@ public class DataRegion implements IDataRegionForQuery {
     PipeInsertionDataNodeListener.getInstance()
         .listenToTsFile(dataRegionId, tsFileResource, true, isGeneratedByPipe);
 
-    // help tsfile resource degrade
-    tsFileResourceManager.registerSealedTsFileResource(tsFileResource);
-
     tsFileManager.add(tsFileResource, false);
 
     return true;
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/TsFileManager.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/TsFileManager.java
index 919848ee540..734c1449dfa 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/TsFileManager.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/TsFileManager.java
@@ -171,7 +171,6 @@ public class TsFileManager {
     try {
       for (TsFileResource resource : tsFileResourceList) {
         remove(resource, sequence);
-        TsFileResourceManager.getInstance().removeTsFileResource(resource);
       }
     } finally {
       writeLock("removeAll");
@@ -184,6 +183,7 @@ public class TsFileManager {
    */
   public void insertToPartitionFileList(
       TsFileResource tsFileResource, long timePartition, boolean sequence, int 
insertPos) {
+    registerTsFileResourceToResourceManager(tsFileResource);
     writeLock("add");
     try {
       Map<Long, TsFileResourceList> selectedMap = sequence ? sequenceFiles : 
unsequenceFiles;
@@ -196,6 +196,7 @@ public class TsFileManager {
   }
 
   public void add(TsFileResource tsFileResource, boolean sequence) {
+    registerTsFileResourceToResourceManager(tsFileResource);
     writeLock("add");
     try {
       Map<Long, TsFileResourceList> selectedMap = sequence ? sequenceFiles : 
unsequenceFiles;
@@ -208,6 +209,7 @@ public class TsFileManager {
   }
 
   public void keepOrderInsert(TsFileResource tsFileResource, boolean sequence) 
throws IOException {
+    registerTsFileResourceToResourceManager(tsFileResource);
     writeLock("keepOrderInsert");
     try {
       Map<Long, TsFileResourceList> selectedMap = sequence ? sequenceFiles : 
unsequenceFiles;
@@ -230,6 +232,13 @@ public class TsFileManager {
     }
   }
 
+  private void registerTsFileResourceToResourceManager(TsFileResource 
resource) {
+    TsFileResourceStatus status = resource.getStatus();
+    if (status != TsFileResourceStatus.UNCLOSED && status != 
TsFileResourceStatus.DELETED) {
+      
TsFileResourceManager.getInstance().registerSealedTsFileResource(resource);
+    }
+  }
+
   /** This method is called after compaction to update memory. */
   public void replace(
       List<TsFileResource> seqFileResources,
diff --git 
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/InsertionCrossSpaceCompactionTest.java
 
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/InsertionCrossSpaceCompactionTest.java
index 0193c616f1a..ddcb90f3ac8 100644
--- 
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/InsertionCrossSpaceCompactionTest.java
+++ 
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/InsertionCrossSpaceCompactionTest.java
@@ -72,6 +72,7 @@ public class InsertionCrossSpaceCompactionTest extends 
AbstractCompactionTest {
     enableInsertionCrossSpaceCompaction =
         
IoTDBDescriptor.getInstance().getConfig().isEnableCrossSpaceCompaction();
     
IoTDBDescriptor.getInstance().getConfig().setEnableCrossSpaceCompaction(true);
+    TsFileResourceManager.getInstance().clear();
   }
 
   @After
@@ -80,6 +81,7 @@ public class InsertionCrossSpaceCompactionTest extends 
AbstractCompactionTest {
         .getConfig()
         .setEnableCrossSpaceCompaction(enableInsertionCrossSpaceCompaction);
     super.tearDown();
+    TsFileResourceManager.getInstance().clear();
   }
 
   @Test
@@ -127,6 +129,9 @@ public class InsertionCrossSpaceCompactionTest extends 
AbstractCompactionTest {
     long timestamp = 
TsFileNameGenerator.getTsFileName(targetFile.getTsFile().getName()).getTime();
     Assert.assertEquals(2, timestamp);
     Assert.assertTrue(tsFileManager.getTsFileList(false).isEmpty());
+    Assert.assertEquals(
+        tsFileManager.size(true) + tsFileManager.size(false),
+        TsFileResourceManager.getInstance().getPriorityQueueSize());
   }
 
   @Test
@@ -168,6 +173,9 @@ public class InsertionCrossSpaceCompactionTest extends 
AbstractCompactionTest {
     TsFileResource targetFile = tsFileManager.getTsFileList(true).get(1);
     long timestamp = 
TsFileNameGenerator.getTsFileName(targetFile.getTsFile().getName()).getTime();
     Assert.assertEquals(2, timestamp);
+    Assert.assertEquals(
+        tsFileManager.size(true) + tsFileManager.size(false),
+        TsFileResourceManager.getInstance().getPriorityQueueSize());
   }
 
   @Test
@@ -209,6 +217,9 @@ public class InsertionCrossSpaceCompactionTest extends 
AbstractCompactionTest {
     TsFileResource targetFile = tsFileManager.getTsFileList(true).get(0);
     long timestamp = 
TsFileNameGenerator.getTsFileName(targetFile.getTsFile().getName()).getTime();
     Assert.assertEquals(0, timestamp);
+    Assert.assertEquals(
+        tsFileManager.size(true) + tsFileManager.size(false),
+        TsFileResourceManager.getInstance().getPriorityQueueSize());
   }
 
   @Test
@@ -256,6 +267,9 @@ public class InsertionCrossSpaceCompactionTest extends 
AbstractCompactionTest {
     long timestamp = 
TsFileNameGenerator.getTsFileName(targetFile.getTsFile().getName()).getTime();
     Assert.assertEquals(4, timestamp);
     Assert.assertTrue(tsFileManager.getTsFileList(false).isEmpty());
+    Assert.assertEquals(
+        tsFileManager.size(true) + tsFileManager.size(false),
+        TsFileResourceManager.getInstance().getPriorityQueueSize());
   }
 
   @Test
@@ -291,6 +305,9 @@ public class InsertionCrossSpaceCompactionTest extends 
AbstractCompactionTest {
     TsFileResource targetFile = tsFileManager.getTsFileList(true).get(0);
     long timestamp = 
TsFileNameGenerator.getTsFileName(targetFile.getTsFile().getName()).getTime();
     Assert.assertEquals(2, timestamp);
+    Assert.assertEquals(
+        tsFileManager.size(true) + tsFileManager.size(false),
+        TsFileResourceManager.getInstance().getPriorityQueueSize());
   }
 
   @Test
@@ -340,6 +357,9 @@ public class InsertionCrossSpaceCompactionTest extends 
AbstractCompactionTest {
     TsFileResource targetFile2 = tsFileManager.getTsFileList(true).get(2);
     timestamp = 
TsFileNameGenerator.getTsFileName(targetFile2.getTsFile().getName()).getTime();
     Assert.assertEquals(6, timestamp);
+    Assert.assertEquals(
+        tsFileManager.size(true) + tsFileManager.size(false),
+        TsFileResourceManager.getInstance().getPriorityQueueSize());
   }
 
   @Test
@@ -378,6 +398,9 @@ public class InsertionCrossSpaceCompactionTest extends 
AbstractCompactionTest {
     TsFileResource targetFile3 = tsFileManager.getTsFileList(true).get(2);
     timestamp = 
TsFileNameGenerator.getTsFileName(targetFile3.getTsFile().getName()).getTime();
     Assert.assertEquals(4, timestamp);
+    Assert.assertEquals(
+        tsFileManager.size(true) + tsFileManager.size(false),
+        TsFileResourceManager.getInstance().getPriorityQueueSize());
   }
 
   @Test
@@ -423,6 +446,9 @@ public class InsertionCrossSpaceCompactionTest extends 
AbstractCompactionTest {
     TsFileResource targetFile2 = tsFileManager.getTsFileList(true).get(1);
     timestamp = 
TsFileNameGenerator.getTsFileName(targetFile2.getTsFile().getName()).getTime();
     Assert.assertEquals(2, timestamp);
+    Assert.assertEquals(
+        tsFileManager.size(true) + tsFileManager.size(false),
+        TsFileResourceManager.getInstance().getPriorityQueueSize());
   }
 
   @Test
@@ -473,6 +499,9 @@ public class InsertionCrossSpaceCompactionTest extends 
AbstractCompactionTest {
     TsFileResource targetFile3 = 
tsFileManager.getOrCreateSequenceListByTimePartition(2808).get(0);
     timestamp = 
TsFileNameGenerator.getTsFileName(targetFile3.getTsFile().getName()).getTime();
     Assert.assertEquals(4, timestamp);
+    Assert.assertEquals(
+        tsFileManager.size(true) + tsFileManager.size(false),
+        TsFileResourceManager.getInstance().getPriorityQueueSize());
   }
 
   @Test
@@ -526,6 +555,9 @@ public class InsertionCrossSpaceCompactionTest extends 
AbstractCompactionTest {
     Assert.assertEquals(seqFileNumBeforeCompaction, 
FileMetrics.getInstance().getFileCount(true));
     Assert.assertEquals(
         unseqFileNumBeforeCompaction, 
FileMetrics.getInstance().getFileCount(false));
+    Assert.assertEquals(
+        tsFileManager.size(true) + tsFileManager.size(false),
+        TsFileResourceManager.getInstance().getPriorityQueueSize());
   }
 
   public TsFileResource generateSingleNonAlignedSeriesFileWithDevices(

Reply via email to