Selaa lähdekoodia

任务操作逻辑优化,修复边界情况下逻辑中断问题(ISSUE-2081)。

xuxueli 9 kuukautta sitten
vanhempi
commit
ab5f20f2f6

+ 3 - 2
doc/XXL-JOB官方文档.md

@@ -2461,8 +2461,9 @@ public void execute() {
 - b、从该版本(v3.0.x)开始基于 SpringBoot3 + JDK17 构建,
 
 ### 7.38 版本 v3.0.1 Release Notes[规划中]
-- 1、[规划中]登陆态Token生成逻辑优化,混淆登陆时间属性,降低token泄漏风险;
-- 2、[规划中]组件扫描改为BeanPostProcessor方式,避免小概率情况下提前初始化;底层组件移除单例写法,汇总factory统一管理;
+- 1、【修复】任务操作逻辑优化,修复边界情况下逻辑中断问题(ISSUE-2081)。
+- 2、[规划中]登陆态Token生成逻辑优化,混淆登陆时间属性,降低token泄漏风险;
+- 3、[规划中]组件扫描改为BeanPostProcessor方式,避免小概率情况下提前初始化;底层组件移除单例写法,汇总factory统一管理;
 
 ### TODO LIST
 - 1、调度隔离:调度中心针对不同执行器,各自维护不同的调度和远程触发组件。

+ 9 - 0
xxl-job-admin/src/main/java/com/xxl/job/admin/service/impl/XxlJobServiceImpl.java

@@ -320,7 +320,11 @@ public class XxlJobServiceImpl implements XxlJobService {
 
 	@Override
 	public ReturnT<String> start(int id) {
+		// load and valid
 		XxlJobInfo xxlJobInfo = xxlJobInfoDao.loadById(id);
+		if (xxlJobInfo == null) {
+			return new ReturnT<String>(ReturnT.FAIL.getCode(), I18nUtil.getString("jobinfo_glue_jobid_unvalid"));
+		}
 
 		// valid
 		ScheduleTypeEnum scheduleTypeEnum = ScheduleTypeEnum.match(xxlJobInfo.getScheduleType(), ScheduleTypeEnum.NONE);
@@ -352,8 +356,13 @@ public class XxlJobServiceImpl implements XxlJobService {
 
 	@Override
 	public ReturnT<String> stop(int id) {
+		// load and valid
         XxlJobInfo xxlJobInfo = xxlJobInfoDao.loadById(id);
+		if (xxlJobInfo == null) {
+			return new ReturnT<String>(ReturnT.FAIL.getCode(), I18nUtil.getString("jobinfo_glue_jobid_unvalid"));
+		}
 
+		// stop
 		xxlJobInfo.setTriggerStatus(0);
 		xxlJobInfo.setTriggerLastTime(0);
 		xxlJobInfo.setTriggerNextTime(0);