feat: 2.4.0
1. 修复阻塞策略为并行时产生大量任务问题
This commit is contained in:
parent
ac671d2ae7
commit
67a34219ae
@ -53,4 +53,6 @@ public class JobTaskPrepareDTO {
|
|||||||
*/
|
*/
|
||||||
private LocalDateTime executionAt;
|
private LocalDateTime executionAt;
|
||||||
|
|
||||||
|
private boolean onlyTimeoutCheck;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -60,15 +60,21 @@ public class JobTaskPrepareActor extends AbstractActor {
|
|||||||
TerminalJobPrepareHandler terminalJobPrepareHandler = SpringContext.getBeanByType(TerminalJobPrepareHandler.class);
|
TerminalJobPrepareHandler terminalJobPrepareHandler = SpringContext.getBeanByType(TerminalJobPrepareHandler.class);
|
||||||
terminalJobPrepareHandler.handler(prepare);
|
terminalJobPrepareHandler.handler(prepare);
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
|
boolean onlyTimeoutCheck = false;
|
||||||
for (JobTaskBatch jobTaskBatch : notCompleteJobTaskBatchList) {
|
for (JobTaskBatch jobTaskBatch : notCompleteJobTaskBatchList) {
|
||||||
prepare.setExecutionAt(jobTaskBatch.getExecutionAt());
|
prepare.setExecutionAt(jobTaskBatch.getExecutionAt());
|
||||||
prepare.setTaskBatchId(jobTaskBatch.getId());
|
prepare.setTaskBatchId(jobTaskBatch.getId());
|
||||||
|
prepare.setOnlyTimeoutCheck(onlyTimeoutCheck);
|
||||||
for (JobPrePareHandler prePareHandler : prePareHandlers) {
|
for (JobPrePareHandler prePareHandler : prePareHandlers) {
|
||||||
if (prePareHandler.matches(jobTaskBatch.getTaskBatchStatus())) {
|
if (prePareHandler.matches(jobTaskBatch.getTaskBatchStatus())) {
|
||||||
prePareHandler.handler(prepare);
|
prePareHandler.handler(prepare);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 当存在大量待处理任务时,除了第一个任务需要执行阻塞策略,其他任务只做任务检查
|
||||||
|
onlyTimeoutCheck = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -55,6 +55,9 @@ public class RunningJobPrepareHandler extends AbstractJobPrePareHandler {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (prepare.isOnlyTimeoutCheck()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
BlockStrategies.BlockStrategyContext blockStrategyContext = JobTaskConverter.INSTANCE.toBlockStrategyContext(prepare);
|
BlockStrategies.BlockStrategyContext blockStrategyContext = JobTaskConverter.INSTANCE.toBlockStrategyContext(prepare);
|
||||||
blockStrategyContext.setOperationReason(jobOperationReasonEnum);
|
blockStrategyContext.setOperationReason(jobOperationReasonEnum);
|
||||||
BlockStrategy blockStrategyInterface = BlockStrategies.BlockStrategyEnum.getBlockStrategy(blockStrategy);
|
BlockStrategy blockStrategyInterface = BlockStrategies.BlockStrategyEnum.getBlockStrategy(blockStrategy);
|
||||||
|
Loading…
Reference in New Issue
Block a user