From 216d26cf2d28b2b93389fac68b7911d36a6e1eb7 Mon Sep 17 00:00:00 2001 From: srzou Date: Thu, 19 Sep 2024 21:43:21 +0800 Subject: [PATCH] =?UTF-8?q?fix:(1.2.0-beta2):=20=E5=A4=8D=E5=8E=9F?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E8=B6=85=E6=97=B6=E6=A3=80=E6=9F=A5=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE=EF=BC=8C=E4=BD=BF=E7=94=A8jobTask=E5=AF=B9=E8=B1=A1?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E7=9B=B8=E5=85=B3=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../support/dispatch/JobExecutorActor.java | 2 +- .../support/timer/JobTimeoutCheckTask.java | 24 +++++++++---------- .../web/service/handler/JobHandler.java | 2 +- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/support/dispatch/JobExecutorActor.java b/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/support/dispatch/JobExecutorActor.java index 040b1105..d29c6853 100644 --- a/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/support/dispatch/JobExecutorActor.java +++ b/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/support/dispatch/JobExecutorActor.java @@ -185,7 +185,7 @@ public class JobExecutorActor extends AbstractActor { if (JobTaskBatchStatusEnum.RUNNING.getStatus() == finalTaskStatus) { // 运行中的任务,需要进行超时检查 - JobTimerWheel.registerWithJob(() -> new JobTimeoutCheckTask(taskExecute), + JobTimerWheel.registerWithJob(() -> new JobTimeoutCheckTask(taskExecute.getTaskBatchId(), job.getId()), // 加500ms是为了让尽量保证客户端自己先超时中断,防止客户端上报成功但是服务端已触发超时中断 Duration.ofMillis(DateUtils.toEpochMilli(job.getExecutorTimeout()) + 500)); } diff --git a/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/support/timer/JobTimeoutCheckTask.java b/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/support/timer/JobTimeoutCheckTask.java index a83107df..dc19523b 100644 --- a/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/support/timer/JobTimeoutCheckTask.java +++ b/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/support/timer/JobTimeoutCheckTask.java @@ -5,7 +5,6 @@ import com.aizuda.snailjob.common.core.enums.JobOperationReasonEnum; import com.aizuda.snailjob.common.core.enums.JobTaskBatchStatusEnum; import com.aizuda.snailjob.common.log.SnailJobLog; import com.aizuda.snailjob.server.common.TimerTask; -import com.aizuda.snailjob.server.job.task.dto.TaskExecuteDTO; import com.aizuda.snailjob.server.job.task.support.JobTaskConverter; import com.aizuda.snailjob.server.job.task.support.JobTaskStopHandler; import com.aizuda.snailjob.server.job.task.support.alarm.event.JobTaskFailAlarmEvent; @@ -32,14 +31,15 @@ import java.util.Objects; public class JobTimeoutCheckTask implements TimerTask { private static final String IDEMPOTENT_KEY_PREFIX = "job_timeout_check_{0}"; - private final TaskExecuteDTO taskExecuteDTO; + private final Long taskBatchId; + private final Long jobId; @Override public void run(Timeout timeout) throws Exception { JobTaskBatchMapper jobTaskBatchMapper = SnailSpringContext.getBean(JobTaskBatchMapper.class); - JobTaskBatch jobTaskBatch = jobTaskBatchMapper.selectById(taskExecuteDTO.getTaskBatchId()); + JobTaskBatch jobTaskBatch = jobTaskBatchMapper.selectById(taskBatchId); if (Objects.isNull(jobTaskBatch)) { - SnailJobLog.LOCAL.error("jobTaskBatch:[{}]不存在", taskExecuteDTO.getTaskBatchId()); + SnailJobLog.LOCAL.error("jobTaskBatch:[{}]不存在", taskBatchId); return; } @@ -49,9 +49,9 @@ public class JobTimeoutCheckTask implements TimerTask { } JobMapper jobMapper = SnailSpringContext.getBean(JobMapper.class); - Job job = jobMapper.selectById(taskExecuteDTO.getJobId()); + Job job = jobMapper.selectById(jobId); if (Objects.isNull(job)) { - SnailJobLog.LOCAL.error("job:[{}]不存在", taskExecuteDTO.getJobId()); + SnailJobLog.LOCAL.error("job:[{}]不存在", jobId); return; } @@ -61,17 +61,17 @@ public class JobTimeoutCheckTask implements TimerTask { stopJobContext.setJobOperationReason(JobOperationReasonEnum.TASK_EXECUTION_TIMEOUT.getReason()); stopJobContext.setNeedUpdateTaskStatus(Boolean.TRUE); stopJobContext.setForceStop(Boolean.TRUE); - stopJobContext.setTaskBatchId(taskExecuteDTO.getTaskBatchId()); - stopJobContext.setWorkflowNodeId(taskExecuteDTO.getWorkflowNodeId()); - stopJobContext.setWorkflowTaskBatchId(taskExecuteDTO.getWorkflowTaskBatchId()); + stopJobContext.setTaskBatchId(taskBatchId); + stopJobContext.setWorkflowNodeId(jobTaskBatch.getWorkflowNodeId()); + stopJobContext.setWorkflowTaskBatchId(jobTaskBatch.getWorkflowTaskBatchId()); instanceInterrupt.stop(stopJobContext); - SnailSpringContext.getContext().publishEvent(new JobTaskFailAlarmEvent(taskExecuteDTO.getTaskBatchId())); - SnailJobLog.LOCAL.info("超时中断.taskBatchId:[{}]", taskExecuteDTO.getTaskBatchId()); + SnailSpringContext.getContext().publishEvent(new JobTaskFailAlarmEvent(taskBatchId)); + SnailJobLog.LOCAL.info("超时中断.taskBatchId:[{}]", taskBatchId); } @Override public String idempotentKey() { - return MessageFormat.format(IDEMPOTENT_KEY_PREFIX, taskExecuteDTO.getTaskBatchId()); + return MessageFormat.format(IDEMPOTENT_KEY_PREFIX, taskBatchId); } } 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 b461e5b8..4c6e0743 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 @@ -117,7 +117,7 @@ public class JobHandler { } // 运行中的任务,需要进行超时检查 - JobTimerWheel.registerWithJob(() -> new JobTimeoutCheckTask(new TaskExecuteDTO(job.getId(), taskBatchId, workflowTaskBatchId, workflowNodeId, JobTaskExecutorSceneEnum.MANUAL_JOB.getType())), + JobTimerWheel.registerWithJob(() -> new JobTimeoutCheckTask(taskBatchId, job.getId()), // 加500ms是为了让尽量保证客户端自己先超时中断,防止客户端上报成功但是服务端已触发超时中断 Duration.ofMillis(DateUtils.toEpochMilli(job.getExecutorTimeout()) + 500));