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