Explorar o código

调度中心组件加载顺序优化,修复极端情况下调度组件初始慢导致的调度失败问题

xueli.xue %!s(int64=4) %!d(string=hai) anos
pai
achega
c88d76c449

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

@@ -2059,8 +2059,9 @@ data: post-data
 - 13、调度中心远程执行日志查询乱码问题修复;
 - 14、执行器注册表字段优化,解决执行器注册节点过多导致注册信息存储和更新失败的问题;
 - 15、调度通讯组件优化,修复RestFul方式调用 DotNet 版本执行器时心跳检测失败问题;
-- 16、[规划中]任务触发参数优化:支持选择 "Cron触发"、"固定间隔时间触发"、"指定时间点触发"、"不选择" 等;
-- 17、[规划中]分片任务:全部完成后才会出发后置节点;
+- 16、调度中心组件加载顺序优化,修复极端情况下调度组件初始慢导致的调度失败问题;
+- 17、[规划中]任务触发参数优化:支持选择 "Cron触发"、"固定间隔时间触发"、"指定时间点触发"、"不选择" 等;
+- 18、[规划中]分片任务:全部完成后才会出发后置节点;
 
 ### 7.32 版本 v2.3.0 Release Notes[规划中]
 - 1、[规划中]DAG流程任务

+ 8 - 8
xxl-job-admin/src/main/java/com/xxl/job/admin/core/scheduler/XxlJobScheduler.java

@@ -24,22 +24,22 @@ public class XxlJobScheduler  {
         // init i18n
         initI18n();
 
+        // admin trigger pool start
+        JobTriggerPoolHelper.toStart();
+
         // admin registry monitor run
         JobRegistryMonitorHelper.getInstance().start();
 
         // admin fail-monitor run
         JobFailMonitorHelper.getInstance().start();
 
-        // admin lose-monitor run
+        // admin lose-monitor run ( depend on JobTriggerPoolHelper )
         JobLosedMonitorHelper.getInstance().start();
 
-        // admin trigger pool start
-        JobTriggerPoolHelper.toStart();
-
         // admin log report start
         JobLogReportHelper.getInstance().start();
 
-        // start-schedule
+        // start-schedule  ( depend on JobTriggerPoolHelper )
         JobScheduleHelper.getInstance().start();
 
         logger.info(">>>>>>>>> init xxl-job admin success.");
@@ -54,9 +54,6 @@ public class XxlJobScheduler  {
         // admin log report stop
         JobLogReportHelper.getInstance().toStop();
 
-        // admin trigger pool stop
-        JobTriggerPoolHelper.toStop();
-
         // admin lose-monitor stop
         JobLosedMonitorHelper.getInstance().toStop();
 
@@ -66,6 +63,9 @@ public class XxlJobScheduler  {
         // admin registry stop
         JobRegistryMonitorHelper.getInstance().toStop();
 
+        // admin trigger pool stop
+        JobTriggerPoolHelper.toStop();
+
     }
 
     // ---------------------- I18n ----------------------

+ 9 - 0
xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobLosedMonitorHelper.java

@@ -35,6 +35,15 @@ public class JobLosedMonitorHelper {
 			@Override
 			public void run() {
 
+				// wait for JobTriggerPoolHelper-init
+				try {
+					TimeUnit.MILLISECONDS.sleep(50);
+				} catch (InterruptedException e) {
+					if (!toStop) {
+						logger.error(e.getMessage(), e);
+					}
+				}
+
 				// monitor
 				while (!toStop) {
 					try {