|
@@ -10,6 +10,7 @@ import org.slf4j.LoggerFactory;
|
10
|
10
|
import java.sql.Connection;
|
11
|
11
|
import java.sql.PreparedStatement;
|
12
|
12
|
import java.sql.SQLException;
|
|
13
|
+import java.text.ParseException;
|
13
|
14
|
import java.util.*;
|
14
|
15
|
import java.util.concurrent.ConcurrentHashMap;
|
15
|
16
|
import java.util.concurrent.TimeUnit;
|
|
@@ -82,15 +83,7 @@ public class JobScheduleHelper {
|
82
|
83
|
// 2.1、trigger-expire > 5s:pass && make next-trigger-time
|
83
|
84
|
|
84
|
85
|
// fresh next
|
85
|
|
- Date nextValidTime = new CronExpression(jobInfo.getJobCron()).getNextValidTimeAfter(new Date());
|
86
|
|
- if (nextValidTime != null) {
|
87
|
|
- jobInfo.setTriggerLastTime(jobInfo.getTriggerNextTime());
|
88
|
|
- jobInfo.setTriggerNextTime(nextValidTime.getTime());
|
89
|
|
- } else {
|
90
|
|
- jobInfo.setTriggerStatus(0);
|
91
|
|
- jobInfo.setTriggerLastTime(0);
|
92
|
|
- jobInfo.setTriggerNextTime(0);
|
93
|
|
- }
|
|
86
|
+ refreshNextValidTime(jobInfo, new Date());
|
94
|
87
|
|
95
|
88
|
} else if (nowTime > jobInfo.getTriggerNextTime()) {
|
96
|
89
|
// 2.2、trigger-expire < 5s:direct-trigger && make next-trigger-time
|
|
@@ -117,15 +110,7 @@ public class JobScheduleHelper {
|
117
|
110
|
pushTimeRing(ringSecond, jobInfo.getId());
|
118
|
111
|
|
119
|
112
|
// 3、fresh next
|
120
|
|
- Date nextValidTime = new CronExpression(jobInfo.getJobCron()).getNextValidTimeAfter(new Date(jobInfo.getTriggerNextTime()));
|
121
|
|
- if (nextValidTime != null) {
|
122
|
|
- jobInfo.setTriggerLastTime(jobInfo.getTriggerNextTime());
|
123
|
|
- jobInfo.setTriggerNextTime(nextValidTime.getTime());
|
124
|
|
- } else {
|
125
|
|
- jobInfo.setTriggerStatus(0);
|
126
|
|
- jobInfo.setTriggerLastTime(0);
|
127
|
|
- jobInfo.setTriggerNextTime(0);
|
128
|
|
- }
|
|
113
|
+ refreshNextValidTime(jobInfo, new Date(jobInfo.getTriggerNextTime()));
|
129
|
114
|
|
130
|
115
|
}
|
131
|
116
|
|
|
@@ -139,15 +124,7 @@ public class JobScheduleHelper {
|
139
|
124
|
pushTimeRing(ringSecond, jobInfo.getId());
|
140
|
125
|
|
141
|
126
|
// 3、fresh next
|
142
|
|
- Date nextValidTime = new CronExpression(jobInfo.getJobCron()).getNextValidTimeAfter(new Date(jobInfo.getTriggerNextTime()));
|
143
|
|
- if (nextValidTime != null) {
|
144
|
|
- jobInfo.setTriggerLastTime(jobInfo.getTriggerNextTime());
|
145
|
|
- jobInfo.setTriggerNextTime(nextValidTime.getTime());
|
146
|
|
- } else {
|
147
|
|
- jobInfo.setTriggerStatus(0);
|
148
|
|
- jobInfo.setTriggerLastTime(0);
|
149
|
|
- jobInfo.setTriggerNextTime(0);
|
150
|
|
- }
|
|
127
|
+ refreshNextValidTime(jobInfo, new Date(jobInfo.getTriggerNextTime()));
|
151
|
128
|
|
152
|
129
|
}
|
153
|
130
|
|
|
@@ -293,6 +270,18 @@ public class JobScheduleHelper {
|
293
|
270
|
ringThread.start();
|
294
|
271
|
}
|
295
|
272
|
|
|
273
|
+ private void refreshNextValidTime(XxlJobInfo jobInfo, Date date) throws ParseException {
|
|
274
|
+ Date nextValidTime = new CronExpression(jobInfo.getJobCron()).getNextValidTimeAfter(date);
|
|
275
|
+ if (nextValidTime != null) {
|
|
276
|
+ jobInfo.setTriggerLastTime(jobInfo.getTriggerNextTime());
|
|
277
|
+ jobInfo.setTriggerNextTime(nextValidTime.getTime());
|
|
278
|
+ } else {
|
|
279
|
+ jobInfo.setTriggerStatus(0);
|
|
280
|
+ jobInfo.setTriggerLastTime(0);
|
|
281
|
+ jobInfo.setTriggerNextTime(0);
|
|
282
|
+ }
|
|
283
|
+ }
|
|
284
|
+
|
296
|
285
|
private void pushTimeRing(int ringSecond, int jobId){
|
297
|
286
|
// push async ring
|
298
|
287
|
List<Integer> ringItemData = ringData.get(ringSecond);
|