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; }