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 b3179e8556edb..fb402cb8000c4 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 @@ private void asyncRecoverTsFileResource() { if (dataRegion != null) { List> asyncTsFileResourceRecoverTasks = dataRegion.getAsyncTsFileResourceRecoverTaskList(); - if (asyncTsFileResourceRecoverTasks != null) { + if (asyncTsFileResourceRecoverTasks != null && !asyncTsFileResourceRecoverTasks.isEmpty()) { Callable taskOfRegion = () -> { for (Callable 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 516b1489a206d..96c7b42621679 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 static RepairDataTaskManager getRepairTaskManagerInstance() { } 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 {