|
|
|
@ -52,9 +52,10 @@ public class JobScheduleHelper {
|
|
|
|
|
Connection conn = null;
|
|
|
|
|
while (!scheduleThreadToStop) {
|
|
|
|
|
|
|
|
|
|
// 扫描任务
|
|
|
|
|
// Scan Job
|
|
|
|
|
long start = System.currentTimeMillis();
|
|
|
|
|
PreparedStatement preparedStatement = null;
|
|
|
|
|
boolean preReadSuc = true;
|
|
|
|
|
try {
|
|
|
|
|
if (conn==null || conn.isClosed()) {
|
|
|
|
|
conn = XxlJobAdminConfig.getAdminConfig().getDataSource().getConnection();
|
|
|
|
@ -154,6 +155,8 @@ public class JobScheduleHelper {
|
|
|
|
|
XxlJobAdminConfig.getAdminConfig().getXxlJobInfoDao().scheduleUpdate(jobInfo);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
preReadSuc = false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// tx stop
|
|
|
|
@ -187,14 +190,17 @@ public class JobScheduleHelper {
|
|
|
|
|
}
|
|
|
|
|
long cost = System.currentTimeMillis()-start;
|
|
|
|
|
|
|
|
|
|
// next second, align second
|
|
|
|
|
try {
|
|
|
|
|
if (cost < 1000) {
|
|
|
|
|
TimeUnit.MILLISECONDS.sleep(1000 - System.currentTimeMillis()%1000);
|
|
|
|
|
}
|
|
|
|
|
} catch (InterruptedException e) {
|
|
|
|
|
if (!scheduleThreadToStop) {
|
|
|
|
|
logger.error(e.getMessage(), e);
|
|
|
|
|
|
|
|
|
|
// Wait seconds, align second
|
|
|
|
|
if (cost < 1000) { // scan-overtime, not wait
|
|
|
|
|
try {
|
|
|
|
|
// pre-read success, exist job in 5s, wait 1s;
|
|
|
|
|
// pre-read fail, no exist job in 5s, wait 1s
|
|
|
|
|
TimeUnit.MILLISECONDS.sleep((preReadSuc?1000:4000) - System.currentTimeMillis()%1000);
|
|
|
|
|
} catch (InterruptedException e) {
|
|
|
|
|
if (!scheduleThreadToStop) {
|
|
|
|
|
logger.error(e.getMessage(), e);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|