|
@@ -67,13 +67,14 @@ public class JobScheduleHelper {
|
67
|
67
|
// tx start
|
68
|
68
|
|
69
|
69
|
// 1、预读5s内调度任务
|
70
|
|
- List<XxlJobInfo> scheduleList = XxlJobAdminConfig.getAdminConfig().getXxlJobInfoDao().scheduleJobQuery(System.currentTimeMillis() + PRE_READ_MS);
|
|
70
|
+ long nowTime = System.currentTimeMillis();
|
|
71
|
+ List<XxlJobInfo> scheduleList = XxlJobAdminConfig.getAdminConfig().getXxlJobInfoDao().scheduleJobQuery(nowTime + PRE_READ_MS);
|
71
|
72
|
if (scheduleList!=null && scheduleList.size()>0) {
|
72
|
73
|
// 2、推送时间轮
|
73
|
74
|
for (XxlJobInfo jobInfo: scheduleList) {
|
74
|
75
|
|
75
|
76
|
// 时间轮刻度计算
|
76
|
|
- if (System.currentTimeMillis() > jobInfo.getTriggerNextTime() + PRE_READ_MS) {
|
|
77
|
+ if (nowTime > jobInfo.getTriggerNextTime() + PRE_READ_MS) {
|
77
|
78
|
// 过期超5s:本地忽略,当前时间开始计算下次触发时间
|
78
|
79
|
|
79
|
80
|
// fresh next
|
|
@@ -84,21 +85,23 @@ public class JobScheduleHelper {
|
84
|
85
|
.getTime()
|
85
|
86
|
);
|
86
|
87
|
|
87
|
|
- } else if (System.currentTimeMillis() > jobInfo.getTriggerNextTime()) {
|
88
|
|
- // 过期5s内 :立即触发一次,当前时间开始计算下次触发时间;一旦过期,预读一次;
|
|
88
|
+ } else if (nowTime > jobInfo.getTriggerNextTime()) {
|
|
89
|
+ // 过期5s内 :立即触发一次,当前时间开始计算下次触发时间;
|
89
|
90
|
|
90
|
91
|
CronExpression cronExpression = new CronExpression(jobInfo.getJobCron());
|
91
|
92
|
long nextTime = cronExpression.getNextValidTimeAfter(new Date()).getTime();
|
92
|
93
|
|
93
|
94
|
// 1、trigger
|
94
|
95
|
JobTriggerPoolHelper.trigger(jobInfo.getId(), TriggerTypeEnum.CRON, -1, null, null);
|
|
96
|
+ logger.debug(">>>>>>>>>>> xxl-job, shecule push trigger : jobId = " + jobInfo.getId() );
|
95
|
97
|
|
96
|
98
|
// 2、fresh next
|
97
|
99
|
jobInfo.setTriggerLastTime(jobInfo.getTriggerNextTime());
|
98
|
100
|
jobInfo.setTriggerNextTime(nextTime);
|
99
|
101
|
|
100
|
|
- // 3、check pre read
|
101
|
|
- if (jobInfo.getTriggerNextTime() - System.currentTimeMillis() < PRE_READ_MS) {
|
|
102
|
+
|
|
103
|
+ // 下次5s内:预读一次;
|
|
104
|
+ if (jobInfo.getTriggerNextTime() - nowTime < PRE_READ_MS) {
|
102
|
105
|
|
103
|
106
|
// 1、make ring second
|
104
|
107
|
int ringSecond = (int)((jobInfo.getTriggerNextTime()/1000)%60);
|
|
@@ -116,7 +119,6 @@ public class JobScheduleHelper {
|
116
|
119
|
|
117
|
120
|
}
|
118
|
121
|
|
119
|
|
- logger.debug(">>>>>>>>>>> xxl-job, push trigger : jobId = " + jobInfo.getId() );
|
120
|
122
|
} else {
|
121
|
123
|
// 未过期:正常触发,递增计算下次触发时间
|
122
|
124
|
|
|
@@ -133,6 +135,7 @@ public class JobScheduleHelper {
|
133
|
135
|
.getNextValidTimeAfter(new Date(jobInfo.getTriggerNextTime()))
|
134
|
136
|
.getTime()
|
135
|
137
|
);
|
|
138
|
+
|
136
|
139
|
}
|
137
|
140
|
|
138
|
141
|
}
|
|
@@ -257,7 +260,7 @@ public class JobScheduleHelper {
|
257
|
260
|
}
|
258
|
261
|
ringItemData.add(jobId);
|
259
|
262
|
|
260
|
|
- logger.debug(">>>>>>>>>>> xxl-job, push time-ring : " + ringSecond + " = " + Arrays.asList(ringItemData) );
|
|
263
|
+ logger.debug(">>>>>>>>>>> xxl-job, shecule push time-ring : " + ringSecond + " = " + Arrays.asList(ringItemData) );
|
261
|
264
|
}
|
262
|
265
|
|
263
|
266
|
public void toStop(){
|