From 9046a8bfcf705a99738605ec194e37edcd8a5a4e Mon Sep 17 00:00:00 2001 From: tjq Date: Fri, 1 Mar 2024 22:06:51 +0800 Subject: [PATCH] fix: Server scheduling exception when worker is overloaded #853 --- .../server/core/scheduler/InstanceStatusCheckService.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/powerjob-server/powerjob-server-core/src/main/java/tech/powerjob/server/core/scheduler/InstanceStatusCheckService.java b/powerjob-server/powerjob-server-core/src/main/java/tech/powerjob/server/core/scheduler/InstanceStatusCheckService.java index 4652904f..a6674c6d 100644 --- a/powerjob-server/powerjob-server-core/src/main/java/tech/powerjob/server/core/scheduler/InstanceStatusCheckService.java +++ b/powerjob-server/powerjob-server-core/src/main/java/tech/powerjob/server/core/scheduler/InstanceStatusCheckService.java @@ -145,7 +145,11 @@ public class InstanceStatusCheckService { log.info("[InstanceStatusChecker] RunningInstance status check using {}.", stopwatch.stop()); } - private void handleWaitingDispatchInstance(List partAppIds) { + private void handleWaitingDispatchInstance(List appIds) { + + // 存在移除操作,需要重新创建集合,否则会导致外层抛出 NoSuchElementException: null + List partAppIds = Lists.newArrayList(appIds); + // 1. 检查等待 WAITING_DISPATCH 状态的任务 long threshold = System.currentTimeMillis() - DISPATCH_TIMEOUT_MS; List waitingDispatchInstances = instanceInfoRepository.findAllByAppIdInAndStatusAndExpectedTriggerTimeLessThan(partAppIds, InstanceStatus.WAITING_DISPATCH.getV(), threshold, PageRequest.of(0, MAX_BATCH_NUM_INSTANCE));