@ -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,18 +268,29 @@ 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 ) {
jobInfo . setTriggerLastTime ( jobInfo . getTriggerNextTime ( ) ) ;
jobInfo . setTriggerNextTime ( nextValidTime . getTime ( ) ) ;
} else {
// generateNextValidTime fail, stop job
jobInfo . setTriggerStatus ( 0 ) ;
jobInfo . setTriggerLastTime ( 0 ) ;
jobInfo . setTriggerNextTime ( 0 ) ;
logger . warn ( ">>>>>>>>>>> xxl-job, refreshNextValidTime fail for job: jobId={}, scheduleType={}, scheduleConf={}" ,
logger . error ( ">>>>>>>>>>> xxl-job, refreshNextValidTime fail for job: jobId={}, scheduleType={}, scheduleConf={}" ,
jobInfo . getId ( ) , jobInfo . getScheduleType ( ) , jobInfo . getScheduleConf ( ) ) ;
}
} catch ( Throwable e ) {
// generateNextValidTime error, stop job
jobInfo . setTriggerStatus ( 0 ) ;
jobInfo . setTriggerLastTime ( 0 ) ;
jobInfo . setTriggerNextTime ( 0 ) ;
logger . error ( ">>>>>>>>>>> xxl-job, refreshNextValidTime error for job: jobId={}, scheduleType={}, scheduleConf={}" ,
jobInfo . getId ( ) , jobInfo . getScheduleType ( ) , jobInfo . getScheduleConf ( ) , e ) ;
}
}
private void pushTimeRing ( int ringSecond , int jobId ) {
@ -301,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 ) {
@ -309,7 +319,7 @@ public class JobScheduleHelper {
scheduleThread . interrupt ( ) ;
try {
scheduleThread . join ( ) ;
} catch ( InterruptedException e ) {
} catch ( Throwable e ) {
logger . error ( e . getMessage ( ) , e ) ;
}
}
@ -328,7 +338,7 @@ public class JobScheduleHelper {
if ( hasRingData ) {
try {
TimeUnit . SECONDS . sleep ( 8 ) ;
} catch ( InterruptedException e ) {
} catch ( Throwable e ) {
logger . error ( e . getMessage ( ) , e ) ;
}
}
@ -337,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 ) {
@ -345,7 +355,7 @@ public class JobScheduleHelper {
ringThread . interrupt ( ) ;
try {
ringThread . join ( ) ;
} catch ( InterruptedException e ) {
} catch ( Throwable e ) {
logger . error ( e . getMessage ( ) , e ) ;
}
}