Ver Fonte

refactor(admin): 优化任务调度相关逻辑和代码结构

- 更新任务触发状态处理逻辑,提高系统稳定性
- 优化任务调度查询和更新 SQL,确保数据一致性- 改进代码结构和注释,提高可读性和可维护性
xuxueli há 10 meses atrás
pai
commit
e97e06b75e

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

@@ -2405,6 +2405,9 @@ public void execute() {
 - 2、【优化】部分系统日志优化,提升可读性;
 - 3、【重构】调度线程任务信息更新逻辑优化,避免极端情况下已关闭任务被启动问题;
 - 5、【重构】执行器注册逻辑重构,降低多调度中心地址时并发注册问题;注册表“xxl_job_registry”新增唯一索引,避免冗余注册信息存储;
+- 6、【优化】合并PR-3616,代码结构注释优化;
+- 7、【优化】合并PR-3619,优化调度过程中任务停止边界情况处理逻辑;
+
 - 4、[规划中]升级springboot3.x,解决2.x老版本漏洞类问题。注意,springboot3.x依赖jdk17;
 - 5、[规划中]安全功能增强,通讯加密参数改用加密数据避免AccessToken明文, 降低token泄漏风险;
 - 6、[规划中]登陆态Token声称逻辑优化,混淆登陆时间属性,降低token泄漏风险;

+ 1 - 0
xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobScheduleHelper.java

@@ -272,6 +272,7 @@ public class JobScheduleHelper {
         try {
             Date nextValidTime = generateNextValidTime(jobInfo, fromTime);
             if (nextValidTime != null) {
+                jobInfo.setTriggerStatus(-1);                               // pass, may be Inaccurate
                 jobInfo.setTriggerLastTime(jobInfo.getTriggerNextTime());
                 jobInfo.setTriggerNextTime(nextValidTime.getTime());
             } else {

+ 4 - 1
xxl-job-admin/src/main/java/com/xxl/job/admin/dao/XxlJobInfoDao.java

@@ -51,7 +51,10 @@ public interface XxlJobInfoDao {
 	public List<XxlJobInfo> scheduleJobQuery(@Param("maxNextTime") long maxNextTime, @Param("pagesize") int pagesize );
 
 	/**
-	 * update schedule job, limit "trigger_status = 1"(avoid stopping tasks from being opened)
+	 * update schedule job
+	 *
+	 * 	1、can only update "trigger_status = 1", Avoid stopping tasks from being opened
+	 * 	2、valid "triggerStatus gte 0", filter illegal state
 	 *
 	 * @param xxlJobInfo
 	 * @return

+ 1 - 1
xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobInfoMapper.xml

@@ -233,7 +233,7 @@
 		SET
 			trigger_last_time = #{triggerLastTime},
 			trigger_next_time = #{triggerNextTime}
-			<if test="triggerStatus == 0">
+			<if test="triggerStatus gte 0">
 			 , trigger_status = #{triggerStatus}
 			</if>
 		WHERE id = #{id}