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

jt2594838 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 eb0e3f1f208 Fix duplicate DataRegion scheduling after recovery (#18803)
eb0e3f1f208 is described below

commit eb0e3f1f2080e34bf5593bfd1cf63b62ecdba2e0
Author: Hongzhi Gao <[email protected]>
AuthorDate: Fri Oct 9 12:18:42 2026 +0800

    Fix duplicate DataRegion scheduling after recovery (#18803)
---
 .../java/org/apache/iotdb/db/storageengine/StorageEngine.java  |  2 +-
 .../compaction/schedule/CompactionScheduleTaskManager.java     | 10 ++++++++--
 2 files changed, 9 insertions(+), 3 deletions(-)

diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/StorageEngine.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/StorageEngine.java
index 2e779717624..93ec1f560a6 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/StorageEngine.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/StorageEngine.java
@@ -403,7 +403,7 @@ public class StorageEngine implements IService {
       if (dataRegion != null) {
         List<Callable<Void>> asyncTsFileResourceRecoverTasks =
             dataRegion.getAsyncTsFileResourceRecoverTaskList();
-        if (asyncTsFileResourceRecoverTasks != null) {
+        if (asyncTsFileResourceRecoverTasks != null && 
!asyncTsFileResourceRecoverTasks.isEmpty()) {
           Callable<Void> taskOfRegion =
               () -> {
                 for (Callable<Void> task : asyncTsFileResourceRecoverTasks) {
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/schedule/CompactionScheduleTaskManager.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/schedule/CompactionScheduleTaskManager.java
index 9024b0995f2..471fc6d6e59 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/schedule/CompactionScheduleTaskManager.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/schedule/CompactionScheduleTaskManager.java
@@ -245,12 +245,18 @@ public class CompactionScheduleTaskManager implements 
IService {
   }
 
   public void registerDataRegion(DataRegion dataRegion) {
-    dataRegionList.add(dataRegion);
+    synchronized (dataRegionList) {
+      if (!dataRegionList.contains(dataRegion)) {
+        dataRegionList.add(dataRegion);
+      }
+    }
   }
 
   public void unregisterDataRegion(DataRegion dataRegion) {
     dataRegion.setAllowCompaction(false);
-    dataRegionList.remove(dataRegion);
+    synchronized (dataRegionList) {
+      dataRegionList.removeIf(region -> region == dataRegion);
+    }
   }
 
   public class RepairDataTaskManager {

Reply via email to