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 {
/**