This is an automated email from the ASF dual-hosted git repository.
shuwenwei pushed a commit to branch dev/1.3
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/dev/1.3 by this push:
new 01a889cd5fd [To dev/1.3] Fix duplicate DataRegion scheduling after
recovery (#19065)
01a889cd5fd is described below
commit 01a889cd5fd50bfe7d4eb3e6b24091c9ea634739
Author: Hongzhi Gao <[email protected]>
AuthorDate: Fri Oct 30 18:34:05 2026 +0800
[To dev/1.3] Fix duplicate DataRegion scheduling after recovery (#19065)
---
.../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 b3179e8556e..fb402cb8000 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
@@ -368,7 +368,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 516b1489a20..96c7b426216 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
@@ -242,11 +242,17 @@ 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) {
- dataRegionList.remove(dataRegion);
+ synchronized (dataRegionList) {
+ dataRegionList.removeIf(region -> region == dataRegion);
+ }
}
public class RepairDataTaskManager {