|
|
|
@ -11,7 +11,6 @@ import org.slf4j.LoggerFactory;
|
|
|
|
|
|
|
|
|
|
import java.sql.Connection;
|
|
|
|
|
import java.sql.PreparedStatement;
|
|
|
|
|
import java.sql.SQLException;
|
|
|
|
|
import java.util.*;
|
|
|
|
|
import java.util.concurrent.ConcurrentHashMap;
|
|
|
|
|
import java.util.concurrent.TimeUnit;
|
|
|
|
@ -44,7 +43,7 @@ public class JobScheduleHelper {
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
TimeUnit.MILLISECONDS.sleep(5000 - System.currentTimeMillis()%1000 );
|
|
|
|
|
} catch (InterruptedException e) {
|
|
|
|
|
} catch (Throwable e) {
|
|
|
|
|
if (!scheduleThreadToStop) {
|
|
|
|
|
logger.error(e.getMessage(), e);
|
|
|
|
|
}
|
|
|
|
@ -150,7 +149,7 @@ public class JobScheduleHelper {
|
|
|
|
|
// tx stop
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
} catch (Throwable e) {
|
|
|
|
|
if (!scheduleThreadToStop) {
|
|
|
|
|
logger.error(">>>>>>>>>>> xxl-job, JobScheduleHelper#scheduleThread error:{}", e);
|
|
|
|
|
}
|
|
|
|
@ -160,21 +159,21 @@ public class JobScheduleHelper {
|
|
|
|
|
if (conn != null) {
|
|
|
|
|
try {
|
|
|
|
|
conn.commit();
|
|
|
|
|
} catch (SQLException e) {
|
|
|
|
|
} catch (Throwable e) {
|
|
|
|
|
if (!scheduleThreadToStop) {
|
|
|
|
|
logger.error(e.getMessage(), e);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
try {
|
|
|
|
|
conn.setAutoCommit(connAutoCommit);
|
|
|
|
|
} catch (SQLException e) {
|
|
|
|
|
} catch (Throwable e) {
|
|
|
|
|
if (!scheduleThreadToStop) {
|
|
|
|
|
logger.error(e.getMessage(), e);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
try {
|
|
|
|
|
conn.close();
|
|
|
|
|
} catch (SQLException e) {
|
|
|
|
|
} catch (Throwable e) {
|
|
|
|
|
if (!scheduleThreadToStop) {
|
|
|
|
|
logger.error(e.getMessage(), e);
|
|
|
|
|
}
|
|
|
|
@ -185,7 +184,7 @@ public class JobScheduleHelper {
|
|
|
|
|
if (null != preparedStatement) {
|
|
|
|
|
try {
|
|
|
|
|
preparedStatement.close();
|
|
|
|
|
} catch (SQLException e) {
|
|
|
|
|
} catch (Throwable e) {
|
|
|
|
|
if (!scheduleThreadToStop) {
|
|
|
|
|
logger.error(e.getMessage(), e);
|
|
|
|
|
}
|
|
|
|
@ -200,7 +199,7 @@ public class JobScheduleHelper {
|
|
|
|
|
try {
|
|
|
|
|
// pre-read period: success > scan each second; fail > skip this period;
|
|
|
|
|
TimeUnit.MILLISECONDS.sleep((preReadSuc?1000:PRE_READ_MS) - System.currentTimeMillis()%1000);
|
|
|
|
|
} catch (InterruptedException e) {
|
|
|
|
|
} catch (Throwable e) {
|
|
|
|
|
if (!scheduleThreadToStop) {
|
|
|
|
|
logger.error(e.getMessage(), e);
|
|
|
|
|
}
|
|
|
|
@ -227,7 +226,7 @@ public class JobScheduleHelper {
|
|
|
|
|
// align second
|
|
|
|
|
try {
|
|
|
|
|
TimeUnit.MILLISECONDS.sleep(1000 - System.currentTimeMillis() % 1000);
|
|
|
|
|
} catch (InterruptedException e) {
|
|
|
|
|
} catch (Throwable e) {
|
|
|
|
|
if (!ringThreadToStop) {
|
|
|
|
|
logger.error(e.getMessage(), e);
|
|
|
|
|
}
|
|
|
|
@ -255,7 +254,7 @@ public class JobScheduleHelper {
|
|
|
|
|
// clear
|
|
|
|
|
ringItemData.clear();
|
|
|
|
|
}
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
} catch (Throwable e) {
|
|
|
|
|
if (!ringThreadToStop) {
|
|
|
|
|
logger.error(">>>>>>>>>>> xxl-job, JobScheduleHelper#ringThread error:{}", e);
|
|
|
|
|
}
|
|
|
|
@ -269,7 +268,7 @@ public class JobScheduleHelper {
|
|
|
|
|
ringThread.start();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void refreshNextValidTime(XxlJobInfo jobInfo, Date fromTime) throws Exception {
|
|
|
|
|
private void refreshNextValidTime(XxlJobInfo jobInfo, Date fromTime) {
|
|
|
|
|
try {
|
|
|
|
|
Date nextValidTime = generateNextValidTime(jobInfo, fromTime);
|
|
|
|
|
if (nextValidTime != null) {
|
|
|
|
@ -283,7 +282,7 @@ public class JobScheduleHelper {
|
|
|
|
|
logger.error(">>>>>>>>>>> xxl-job, refreshNextValidTime fail for job: jobId={}, scheduleType={}, scheduleConf={}",
|
|
|
|
|
jobInfo.getId(), jobInfo.getScheduleType(), jobInfo.getScheduleConf());
|
|
|
|
|
}
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
} catch (Throwable e) {
|
|
|
|
|
// generateNextValidTime error, stop job
|
|
|
|
|
jobInfo.setTriggerStatus(0);
|
|
|
|
|
jobInfo.setTriggerLastTime(0);
|
|
|
|
@ -312,7 +311,7 @@ public class JobScheduleHelper {
|
|
|
|
|
scheduleThreadToStop = true;
|
|
|
|
|
try {
|
|
|
|
|
TimeUnit.SECONDS.sleep(1); // wait
|
|
|
|
|
} catch (InterruptedException e) {
|
|
|
|
|
} catch (Throwable e) {
|
|
|
|
|
logger.error(e.getMessage(), e);
|
|
|
|
|
}
|
|
|
|
|
if (scheduleThread.getState() != Thread.State.TERMINATED){
|
|
|
|
@ -320,7 +319,7 @@ public class JobScheduleHelper {
|
|
|
|
|
scheduleThread.interrupt();
|
|
|
|
|
try {
|
|
|
|
|
scheduleThread.join();
|
|
|
|
|
} catch (InterruptedException e) {
|
|
|
|
|
} catch (Throwable e) {
|
|
|
|
|
logger.error(e.getMessage(), e);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -339,7 +338,7 @@ public class JobScheduleHelper {
|
|
|
|
|
if (hasRingData) {
|
|
|
|
|
try {
|
|
|
|
|
TimeUnit.SECONDS.sleep(8);
|
|
|
|
|
} catch (InterruptedException e) {
|
|
|
|
|
} catch (Throwable e) {
|
|
|
|
|
logger.error(e.getMessage(), e);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -348,7 +347,7 @@ public class JobScheduleHelper {
|
|
|
|
|
ringThreadToStop = true;
|
|
|
|
|
try {
|
|
|
|
|
TimeUnit.SECONDS.sleep(1);
|
|
|
|
|
} catch (InterruptedException e) {
|
|
|
|
|
} catch (Throwable e) {
|
|
|
|
|
logger.error(e.getMessage(), e);
|
|
|
|
|
}
|
|
|
|
|
if (ringThread.getState() != Thread.State.TERMINATED){
|
|
|
|
@ -356,7 +355,7 @@ public class JobScheduleHelper {
|
|
|
|
|
ringThread.interrupt();
|
|
|
|
|
try {
|
|
|
|
|
ringThread.join();
|
|
|
|
|
} catch (InterruptedException e) {
|
|
|
|
|
} catch (Throwable e) {
|
|
|
|
|
logger.error(e.getMessage(), e);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|