diff --git a/fe/fe-core/src/main/java/com/starrocks/load/batchwrite/CoordinatorBackendAssignerImpl.java b/fe/fe-core/src/main/java/com/starrocks/load/batchwrite/CoordinatorBackendAssignerImpl.java index 3778561a9d4da..87562d3ab7235 100644 --- a/fe/fe-core/src/main/java/com/starrocks/load/batchwrite/CoordinatorBackendAssignerImpl.java +++ b/fe/fe-core/src/main/java/com/starrocks/load/batchwrite/CoordinatorBackendAssignerImpl.java @@ -151,11 +151,14 @@ private void runSchedule() { task.getScheduleType(), task.getTaskId(), System.currentTimeMillis() - startTime, e); throwable = e; } finally { + // numExecutedTasks is just for testing. Should update it before calling task.finish() + // which may notify the waiting thread. So that after the thread wakes up, it can get + // the correct numExecutedTasks including this one. + numExecutedTasks.incrementAndGet(); task.finish(throwable); if (task.getScheduleType() == EventType.DETECT_UNAVAILABLE_NODES) { numPendingTasksForDetectUnavailableNodes.decrementAndGet(); } - numExecutedTasks.incrementAndGet(); } } }