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

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


The following commit(s) were added to refs/heads/master by this push:
     new b232fcf163d fix inner compaction select task base on mod file (#11654)
b232fcf163d is described below

commit b232fcf163d4a209cd33015d1131f4647b5f3235
Author: shuwenwei <[email protected]>
AuthorDate: Tue Dec 5 16:50:09 2023 +0800

    fix inner compaction select task base on mod file (#11654)
---
 .../impl/SizeTieredCompactionSelector.java         |  3 +++
 .../inner/InnerSpaceCompactionSelectorTest.java    | 24 ++++++++++++++++++++++
 2 files changed, 27 insertions(+)

diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/selector/impl/SizeTieredCompactionSelector.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/selector/impl/SizeTieredCompactionSelector.java
index 920e5fb3432..8c18b0cc350 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/selector/impl/SizeTieredCompactionSelector.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/selector/impl/SizeTieredCompactionSelector.java
@@ -196,6 +196,9 @@ public class SizeTieredCompactionSelector
       if (Objects.isNull(modFile) || !modFile.exists()) {
         continue;
       }
+      if (tsFileResource.getStatus() != TsFileResourceStatus.NORMAL) {
+        continue;
+      }
       if (modFile.getSize() > MODS_FILE_SIZE_THRESHOLD
           || !CompactionUtils.isDiskHasSpace(DISK_REDUNDANCY)) {
         taskList.add(
diff --git 
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/InnerSpaceCompactionSelectorTest.java
 
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/InnerSpaceCompactionSelectorTest.java
index bc9688ffaa7..6176f66d72c 100644
--- 
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/InnerSpaceCompactionSelectorTest.java
+++ 
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/InnerSpaceCompactionSelectorTest.java
@@ -688,6 +688,30 @@ public class InnerSpaceCompactionSelectorTest extends 
AbstractCompactionTest {
     mockModiFicationFile.remove();
   }
 
+  @Test
+  public void 
testSelectWhenModsFileGreaterThan50MWithTsFileResourceStatusIsNotNormal()
+      throws IOException, MetadataException, WriteProcessException {
+    createFiles(2, 2, 3, 50, 0, 10000, 50, 50, false, true);
+    tsFileManager.addAll(seqResources, true);
+    tsFileManager.addAll(unseqResources, false);
+
+    // mock modification file size must greater than 50M
+    MockModiFicationFile mockModiFicationFile =
+        new MockModiFicationFile(
+            seqResources.get(0).getTsFilePath() + 
ModificationFile.FILE_SUFFIX);
+    mockModiFicationFile.write(new Deletion(new PartialPath("root.a.b"), 1, 
1));
+    seqResources.get(0).setModFile(mockModiFicationFile);
+    seqResources.get(0).setStatusForTest(TsFileResourceStatus.COMPACTING);
+    SizeTieredCompactionSelector selector =
+        new SizeTieredCompactionSelector("", "", 0, true, tsFileManager);
+    // copy candidate source file list
+    List<TsFileResource> resources = 
tsFileManager.getOrCreateSequenceListByTimePartition(0);
+    List<InnerSpaceCompactionTask> innerSpaceCompactionTasks =
+        selector.selectInnerSpaceTask(resources);
+    Assert.assertEquals(0, innerSpaceCompactionTasks.size());
+    mockModiFicationFile.remove();
+  }
+
   class MockModiFicationFile extends ModificationFile {
 
     /**

Reply via email to