From 945c77bdc0331af19668fbd65f4fc347ac51ad67 Mon Sep 17 00:00:00 2001 From: opensnail <598092184@qq.com> Date: Thu, 23 May 2024 09:34:30 +0800 Subject: [PATCH] =?UTF-8?q?feat(sj=5F1.0.0):=20=E5=AE=9A=E6=97=B6=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E6=89=8B=E5=8A=A8=E9=87=8D=E8=AF=95=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E8=B6=85=E6=97=B6=E6=A3=80=E6=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- snail-job-server/pom.xml | 2 +- .../server/web/service/handler/JobHandler.java | 12 +++++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/snail-job-server/pom.xml b/snail-job-server/pom.xml index 52bc7d59a..0a61fe16b 100644 --- a/snail-job-server/pom.xml +++ b/snail-job-server/pom.xml @@ -28,7 +28,7 @@ 2.6.21 4.4.0 0.9.16 - 32.0.0-jre + 33.2.0-jre 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 ca776581b..9a995658f 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 @@ -10,6 +10,7 @@ import com.aizuda.snailjob.common.core.enums.JobTaskStatusEnum; import com.aizuda.snailjob.server.common.akka.ActorGenerator; import com.aizuda.snailjob.server.common.enums.JobTaskExecutorSceneEnum; import com.aizuda.snailjob.server.common.exception.SnailJobServerException; +import com.aizuda.snailjob.server.common.util.DateUtils; import com.aizuda.snailjob.server.job.task.dto.TaskExecuteDTO; import com.aizuda.snailjob.server.job.task.enums.JobRetrySceneEnum; import com.aizuda.snailjob.server.job.task.support.ClientCallbackHandler; @@ -19,6 +20,8 @@ import com.aizuda.snailjob.server.job.task.support.callback.ClientCallbackContex import com.aizuda.snailjob.server.job.task.support.callback.ClientCallbackFactory; import com.aizuda.snailjob.server.job.task.support.stop.JobTaskStopFactory; import com.aizuda.snailjob.server.job.task.support.stop.TaskStopJobContext; +import com.aizuda.snailjob.server.job.task.support.timer.JobTimeoutCheckTask; +import com.aizuda.snailjob.server.job.task.support.timer.JobTimerWheel; import com.aizuda.snailjob.template.datasource.persistence.mapper.JobMapper; import com.aizuda.snailjob.template.datasource.persistence.mapper.JobTaskBatchMapper; import com.aizuda.snailjob.template.datasource.persistence.mapper.JobTaskMapper; @@ -29,6 +32,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Component; +import java.time.Duration; import java.util.List; /** @@ -57,7 +61,8 @@ public class JobHandler { // 重置状态为运行中 jobTaskBatch.setTaskBatchStatus(JobTaskBatchStatusEnum.RUNNING.getStatus()); - + // 重置状态原因 + jobTaskBatch.setOperationReason(JobOperationReasonEnum.NONE.getReason()); Assert.isTrue(jobTaskBatchMapper.updateById(jobTaskBatch) > 0, () -> new SnailJobServerException("update job batch to running failed.")); @@ -104,6 +109,11 @@ public class JobHandler { clientCallback.callback(context); } + // 运行中的任务,需要进行超时检查 + JobTimerWheel.registerWithJob(() -> new JobTimeoutCheckTask(taskBatchId, job.getId()), + // 加500ms是为了让尽量保证客户端自己先超时中断,防止客户端上报成功但是服务端已触发超时中断 + Duration.ofMillis(DateUtils.toEpochMilli(job.getExecutorTimeout()) + 500)); + return Boolean.TRUE; }