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 {