Browse Source

Merge pull request #1211 from qinnnyul/refactor-extract-common-method

许雪里 5 years ago
parent
commit
2247be23b1
No account linked to committer's email

+ 16 - 27
xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobScheduleHelper.java View File

10
 import java.sql.Connection;
10
 import java.sql.Connection;
11
 import java.sql.PreparedStatement;
11
 import java.sql.PreparedStatement;
12
 import java.sql.SQLException;
12
 import java.sql.SQLException;
13
+import java.text.ParseException;
13
 import java.util.*;
14
 import java.util.*;
14
 import java.util.concurrent.ConcurrentHashMap;
15
 import java.util.concurrent.ConcurrentHashMap;
15
 import java.util.concurrent.TimeUnit;
16
 import java.util.concurrent.TimeUnit;
82
                                     // 2.1、trigger-expire > 5s:pass && make next-trigger-time
83
                                     // 2.1、trigger-expire > 5s:pass && make next-trigger-time
83
 
84
 
84
                                     // fresh next
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
                                 } else if (nowTime > jobInfo.getTriggerNextTime()) {
88
                                 } else if (nowTime > jobInfo.getTriggerNextTime()) {
96
                                     // 2.2、trigger-expire < 5s:direct-trigger && make next-trigger-time
89
                                     // 2.2、trigger-expire < 5s:direct-trigger && make next-trigger-time
117
                                         pushTimeRing(ringSecond, jobInfo.getId());
110
                                         pushTimeRing(ringSecond, jobInfo.getId());
118
 
111
 
119
                                         // 3、fresh next
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
                                     pushTimeRing(ringSecond, jobInfo.getId());
124
                                     pushTimeRing(ringSecond, jobInfo.getId());
140
 
125
 
141
                                     // 3、fresh next
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
         ringThread.start();
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
     private void pushTimeRing(int ringSecond, int jobId){
285
     private void pushTimeRing(int ringSecond, int jobId){
297
         // push async ring
286
         // push async ring
298
         List<Integer> ringItemData = ringData.get(ringSecond);
287
         List<Integer> ringItemData = ringData.get(ringSecond);