diff --git a/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/support/handler/WorkflowBatchHandler.java b/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/support/handler/WorkflowBatchHandler.java index e0c1aac63..ad105cab7 100644 --- a/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/support/handler/WorkflowBatchHandler.java +++ b/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/support/handler/WorkflowBatchHandler.java @@ -183,6 +183,15 @@ public class WorkflowBatchHandler { operationReason = JobOperationReasonEnum.JOB_OVERLAY.getReason(); } + // 关闭已经触发的任务 + List jobTaskBatches = jobTaskBatchMapper.selectList(new LambdaQueryWrapper() + .in(JobTaskBatch::getTaskBatchStatus, NOT_COMPLETE) + .eq(JobTaskBatch::getWorkflowTaskBatchId, workflowTaskBatchId)); + + if (CollUtil.isEmpty(jobTaskBatches)) { + return; + } + WorkflowTaskBatch workflowTaskBatch = new WorkflowTaskBatch(); workflowTaskBatch.setTaskBatchStatus(JobTaskBatchStatusEnum.STOP.getStatus()); workflowTaskBatch.setOperationReason(operationReason); @@ -193,15 +202,6 @@ public class WorkflowBatchHandler { workflowTaskBatchId)); SnailSpringContext.getContext().publishEvent(new WorkflowTaskFailAlarmEvent(workflowTaskBatchId)); - // 关闭已经触发的任务 - List jobTaskBatches = jobTaskBatchMapper.selectList(new LambdaQueryWrapper() - .in(JobTaskBatch::getTaskBatchStatus, NOT_COMPLETE) - .eq(JobTaskBatch::getWorkflowTaskBatchId, workflowTaskBatchId)); - - if (CollUtil.isEmpty(jobTaskBatches)) { - return; - } - List jobs = jobMapper.selectBatchIds(StreamUtils.toSet(jobTaskBatches, JobTaskBatch::getJobId)); Map jobMap = StreamUtils.toIdentityMap(jobs, Job::getId); diff --git a/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/support/stop/AbstractJobTaskStopHandler.java b/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/support/stop/AbstractJobTaskStopHandler.java index 10c199b63..6645876d6 100644 --- a/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/support/stop/AbstractJobTaskStopHandler.java +++ b/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/support/stop/AbstractJobTaskStopHandler.java @@ -60,6 +60,9 @@ public abstract class AbstractJobTaskStopHandler implements JobTaskStopHandler, if (context.isNeedUpdateTaskStatus()) { for (final JobTask jobTask : jobTasks) { + if (jobTask.getTaskStatus() == JobTaskStatusEnum.SUCCESS.getStatus()){ + continue; + } JobExecutorResultDTO jobExecutorResultDTO = JobTaskConverter.INSTANCE.toJobExecutorResultDTO(jobTask); jobExecutorResultDTO.setTaskStatus(JobTaskStatusEnum.STOP.getStatus()); jobExecutorResultDTO.setMessage("任务停止成功"); diff --git a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/handler/JobHandler.java b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/handler/JobHandler.java index 4f5656b26..4c6e0743f 100644 --- a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/handler/JobHandler.java +++ b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/handler/JobHandler.java @@ -93,7 +93,9 @@ public class JobHandler { String wfContext = getWfContext(workflowTaskBatchId); for (JobTask jobTask : jobTasks) { - if (jobTask.getTaskStatus() == JobTaskStatusEnum.RUNNING.getStatus()) { + // 增加Map及MapReduce重试任务的状态判断,防止重复执行 + if (jobTask.getTaskStatus() == JobTaskStatusEnum.RUNNING.getStatus() + || jobTask.getTaskStatus() == JobTaskStatusEnum.SUCCESS.getStatus()) { continue; }