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

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

commit a880779bcffc21b96450fd5140e41bcbcf13d68f
Author: Tian Jiang <[email protected]>
AuthorDate: Tue Nov 25 10:43:20 2025 +0800

    Fix that settle compaction may lgnore some newly incoming deletions
---
 .../org/apache/iotdb/relational/it/db/it/IoTDBDeletionTableIT.java   | 2 +-
 .../dataregion/compaction/execute/task/SettleCompactionTask.java     | 5 +++++
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git 
a/integration-test/src/test/java/org/apache/iotdb/relational/it/db/it/IoTDBDeletionTableIT.java
 
b/integration-test/src/test/java/org/apache/iotdb/relational/it/db/it/IoTDBDeletionTableIT.java
index d08e26be4f0..6720f5f793c 100644
--- 
a/integration-test/src/test/java/org/apache/iotdb/relational/it/db/it/IoTDBDeletionTableIT.java
+++ 
b/integration-test/src/test/java/org/apache/iotdb/relational/it/db/it/IoTDBDeletionTableIT.java
@@ -1741,7 +1741,7 @@ public class IoTDBDeletionTableIT {
     List<TimeRange> ranges = new ArrayList<>();
     try (ResultSet set =
         statement.executeQuery(
-            "select time from table" + testNum + " where time <= " + 
timeUpperBound)) {
+            "select time from table" + testNum + " where time <= " + 
timeUpperBound + " order by time")) {
       while (set.next()) {
         long time = set.getLong(1);
         if (ranges.isEmpty()) {
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/task/SettleCompactionTask.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/task/SettleCompactionTask.java
index e00703e5e75..42aae6e5a66 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/task/SettleCompactionTask.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/task/SettleCompactionTask.java
@@ -22,6 +22,7 @@ import org.apache.iotdb.db.service.metrics.FileMetrics;
 import 
org.apache.iotdb.db.storageengine.dataregion.compaction.constant.CompactionTaskType;
 import 
org.apache.iotdb.db.storageengine.dataregion.compaction.execute.exception.CompactionRecoverException;
 import 
org.apache.iotdb.db.storageengine.dataregion.compaction.execute.performer.ICompactionPerformer;
+import 
org.apache.iotdb.db.storageengine.dataregion.compaction.execute.utils.CompactionUtils;
 import 
org.apache.iotdb.db.storageengine.dataregion.compaction.execute.utils.log.CompactionLogAnalyzer;
 import 
org.apache.iotdb.db.storageengine.dataregion.compaction.execute.utils.log.CompactionLogger;
 import 
org.apache.iotdb.db.storageengine.dataregion.compaction.execute.utils.log.SimpleCompactionLogger;
@@ -136,7 +137,11 @@ public class SettleCompactionTask extends 
InnerSpaceCompactionTask {
         new File(
             allSourceFiles.get(0).getTsFile().getAbsolutePath()
                 + CompactionLogger.SETTLE_COMPACTION_LOG_NAME_SUFFIX);
+
     try (SimpleCompactionLogger compactionLogger = new 
SimpleCompactionLogger(logFile)) {
+      CompactionUtils.prepareCompactionModFiles(
+          filesView.targetFilesInPerformer, 
filesView.sourceFilesInCompactionPerformer);
+
       calculateSourceFilesAndTargetFiles();
       isHoldingWriteLock = new boolean[this.filesView.sourceFilesInLog.size()];
       Arrays.fill(isHoldingWriteLock, false);

Reply via email to