Skip to content

Commit eb0e3f1

Browse files
authored
Fix duplicate DataRegion scheduling after recovery (#18803)
1 parent 620be28 commit eb0e3f1

2 files changed

Lines changed: 9 additions & 3 deletions

File tree

‎iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/StorageEngine.java‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -403,7 +403,7 @@ private void asyncRecoverTsFileResource() {
403403
if (dataRegion != null) {
404404
List<Callable<Void>> asyncTsFileResourceRecoverTasks =
405405
dataRegion.getAsyncTsFileResourceRecoverTaskList();
406-
if (asyncTsFileResourceRecoverTasks != null) {
406+
if (asyncTsFileResourceRecoverTasks != null && !asyncTsFileResourceRecoverTasks.isEmpty()) {
407407
Callable<Void> taskOfRegion =
408408
() -> {
409409
for (Callable<Void> task : asyncTsFileResourceRecoverTasks) {

‎iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/schedule/CompactionScheduleTaskManager.java‎

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -245,12 +245,18 @@ public static RepairDataTaskManager getRepairTaskManagerInstance() {
245245
}
246246

247247
public void registerDataRegion(DataRegion dataRegion) {
248-
dataRegionList.add(dataRegion);
248+
synchronized (dataRegionList) {
249+
if (!dataRegionList.contains(dataRegion)) {
250+
dataRegionList.add(dataRegion);
251+
}
252+
}
249253
}
250254

251255
public void unregisterDataRegion(DataRegion dataRegion) {
252256
dataRegion.setAllowCompaction(false);
253-
dataRegionList.remove(dataRegion);
257+
synchronized (dataRegionList) {
258+
dataRegionList.removeIf(region -> region == dataRegion);
259+
}
254260
}
255261

256262
public class RepairDataTaskManager {

0 commit comments

Comments
 (0)