fix: Repeated execution after broadcast worker node down #1003

This commit is contained in:
tjq 2024-11-22 21:32:13 +08:00
parent 4e84bc60d7
commit 57627305fa

View File

@ -296,8 +296,10 @@ public class CommonTaskTracker extends HeavyTaskTracker {
// 6.2 定期检查 -> 重新执行被派发到宕机ProcessorTracker上的任务
List<String> disconnectedPTs = ptStatusHolder.getAllDisconnectedProcessorTrackers();
if (!disconnectedPTs.isEmpty()) {
log.warn("[TaskTracker-{}] some ProcessorTracker disconnected from TaskTracker,their address is {}.", instanceId, disconnectedPTs);
if (taskPersistenceService.updateLostTasks(instanceId, disconnectedPTs, true)) {
// 广播任务节点丢失后若直接移除 IP 重试后续会派发到其他节点导致重复执行因此此处不能重试 https://github.com/PowerJob/PowerJob/issues/1003
boolean needRetry = !ExecuteType.BROADCAST.equals(executeType);
log.warn("[TaskTracker-{}] some ProcessorTracker disconnected from TaskTracker,their address is {}, needRetry: {}.", instanceId, disconnectedPTs, needRetry);
if (taskPersistenceService.updateLostTasks(instanceId, disconnectedPTs, needRetry)) {
ptStatusHolder.remove(disconnectedPTs);
log.warn("[TaskTracker-{}] removed these ProcessorTracker from StatusHolder: {}", instanceId, disconnectedPTs);
}