|
@@ -52,9 +52,10 @@ public class JobScheduleHelper {
|
52
|
52
|
Connection conn = null;
|
53
|
53
|
while (!scheduleThreadToStop) {
|
54
|
54
|
|
55
|
|
- // 扫描任务
|
|
55
|
+ // Scan Job
|
56
|
56
|
long start = System.currentTimeMillis();
|
57
|
57
|
PreparedStatement preparedStatement = null;
|
|
58
|
+ boolean preReadSuc = true;
|
58
|
59
|
try {
|
59
|
60
|
if (conn==null || conn.isClosed()) {
|
60
|
61
|
conn = XxlJobAdminConfig.getAdminConfig().getDataSource().getConnection();
|
|
@@ -154,6 +155,8 @@ public class JobScheduleHelper {
|
154
|
155
|
XxlJobAdminConfig.getAdminConfig().getXxlJobInfoDao().scheduleUpdate(jobInfo);
|
155
|
156
|
}
|
156
|
157
|
|
|
158
|
+ } else {
|
|
159
|
+ preReadSuc = false;
|
157
|
160
|
}
|
158
|
161
|
|
159
|
162
|
// tx stop
|
|
@@ -187,14 +190,17 @@ public class JobScheduleHelper {
|
187
|
190
|
}
|
188
|
191
|
long cost = System.currentTimeMillis()-start;
|
189
|
192
|
|
190
|
|
- // next second, align second
|
191
|
|
- try {
|
192
|
|
- if (cost < 1000) {
|
193
|
|
- TimeUnit.MILLISECONDS.sleep(1000 - System.currentTimeMillis()%1000);
|
194
|
|
- }
|
195
|
|
- } catch (InterruptedException e) {
|
196
|
|
- if (!scheduleThreadToStop) {
|
197
|
|
- logger.error(e.getMessage(), e);
|
|
193
|
+
|
|
194
|
+ // Wait seconds, align second
|
|
195
|
+ if (cost < 1000) { // scan-overtime, not wait
|
|
196
|
+ try {
|
|
197
|
+ // pre-read success, exist job in 5s, wait 1s;
|
|
198
|
+ // pre-read fail, no exist job in 5s, wait 1s
|
|
199
|
+ TimeUnit.MILLISECONDS.sleep((preReadSuc?1000:4000) - System.currentTimeMillis()%1000);
|
|
200
|
+ } catch (InterruptedException e) {
|
|
201
|
+ if (!scheduleThreadToStop) {
|
|
202
|
+ logger.error(e.getMessage(), e);
|
|
203
|
+ }
|
198
|
204
|
}
|
199
|
205
|
}
|
200
|
206
|
|