@ -673,11 +673,11 @@ public abstract class JobStoreSupport implements JobStore, Constants {
this . schedSignaler = signaler ;
this . schedSignaler = signaler ;
// If the user hasn't specified an explicit lock handler, then
// If the user hasn't specified an explicit lock handler, then
// choose one based on CMT/Clustered/UseDBLocks.
// choose one based on CMT/Clustered/UseDBLocks.
if ( getLockHandler ( ) = = null ) {
if ( getLockHandler ( ) = = null ) {
// If the user hasn't specified an explicit lock handler,
// If the user hasn't specified an explicit lock handler,
// then we *must* use DB locks with clustering
// then we *must* use DB locks with clustering
if ( isClustered ( ) ) {
if ( isClustered ( ) ) {
setUseDBLocks ( true ) ;
setUseDBLocks ( true ) ;
@ -987,8 +987,8 @@ public abstract class JobStoreSupport implements JobStore, Constants {
List < TriggerKey > misfiredTriggers = new LinkedList < TriggerKey > ( ) ;
List < TriggerKey > misfiredTriggers = new LinkedList < TriggerKey > ( ) ;
long earliestNewTime = Long . MAX_VALUE ;
long earliestNewTime = Long . MAX_VALUE ;
// We must still look for the MISFIRED state in case triggers were left
// We must still look for the MISFIRED state in case triggers were left
// in this state when upgrading to this version that does not support it.
// in this state when upgrading to this version that does not support it.
boolean hasMoreMisfiredTriggers =
boolean hasMoreMisfiredTriggers =
getDelegate ( ) . hasMisfiredTriggersInState (
getDelegate ( ) . hasMisfiredTriggersInState (
conn , STATE_WAITING , getMisfireTime ( ) ,
conn , STATE_WAITING , getMisfireTime ( ) ,
@ -2835,12 +2835,10 @@ public abstract class JobStoreSupport implements JobStore, Constants {
currentLoopCount + + ;
currentLoopCount + + ;
try {
try {
long misfireTime = getMisfireTime ( ) ;
long misfireTime = getMisfireTime ( ) ;
List < TriggerKey > waitingKeys = getDelegate ( ) . selectTriggerToAcquire ( conn , noLaterThan + timeWindow , misfireTime , maxCount ) ;
List < TriggerKey > appointKeys = getDelegate ( ) . selectAppointOrNonTriggerToAcquire ( conn , noLaterThan + timeWindow , misfireTime , maxCount , this . currentId ) ;
List < TriggerKey > appointKeys = getDelegate ( ) . selectAppointTriggerToAcquire ( conn , noLaterThan + timeWindow , misfireTime , maxCount , this . currentId ) ;
List < TriggerKey > allKeys = new ArrayList < TriggerKey > ( ) ;
List < TriggerKey > allKeys = new ArrayList < TriggerKey > ( ) ;
Set < String > keyIds = new HashSet < String > ( ) ;
Set < String > keyIds = new HashSet < String > ( ) ;
mergeKeys ( allKeys , keyIds , waitingKeys ) ;
mergeKeys ( allKeys , keyIds , appointKeys ) ;
mergeKeys ( allKeys , keyIds , appointKeys ) ;
// No trigger is ready to fire yet.
// No trigger is ready to fire yet.
@ -3117,7 +3115,7 @@ public abstract class JobStoreSupport implements JobStore, Constants {
try {
try {
if ( triggerInstCode = = CompletedExecutionInstruction . DELETE_TRIGGER ) {
if ( triggerInstCode = = CompletedExecutionInstruction . DELETE_TRIGGER ) {
if ( trigger . getNextFireTime ( ) = = null ) {
if ( trigger . getNextFireTime ( ) = = null ) {
// double check for possible reschedule within job
// double check for possible reschedule within job
// execution, which would cancel the need to delete...
// execution, which would cancel the need to delete...
TriggerStatus stat = getDelegate ( ) . selectTriggerStatus (
TriggerStatus stat = getDelegate ( ) . selectTriggerStatus (
conn , trigger . getKey ( ) ) ;
conn , trigger . getKey ( ) ) ;
@ -3236,7 +3234,7 @@ public abstract class JobStoreSupport implements JobStore, Constants {
try {
try {
RecoverMisfiredJobsResult result = RecoverMisfiredJobsResult . NO_OP ;
RecoverMisfiredJobsResult result = RecoverMisfiredJobsResult . NO_OP ;
// Before we make the potentially expensive call to acquire the
// Before we make the potentially expensive call to acquire the
// trigger lock, peek ahead to see if it is likely we would find
// trigger lock, peek ahead to see if it is likely we would find
// misfired triggers requiring recovery.
// misfired triggers requiring recovery.
int misfireCount = ( getDoubleCheckLockMisfireHandler ( ) ) ?
int misfireCount = ( getDoubleCheckLockMisfireHandler ( ) ) ?
@ -3311,8 +3309,8 @@ public abstract class JobStoreSupport implements JobStore, Constants {
Connection conn = getNonManagedTXConnection ( ) ;
Connection conn = getNonManagedTXConnection ( ) ;
try {
try {
// Other than the first time, always checkin first to make sure there is
// Other than the first time, always checkin first to make sure there is
// work to be done before we acquire the lock (since that is expensive,
// work to be done before we acquire the lock (since that is expensive,
// and is almost never necessary). This must be done in a separate
// and is almost never necessary). This must be done in a separate
// transaction to prevent a deadlock under recovery conditions.
// transaction to prevent a deadlock under recovery conditions.
List < SchedulerStateRecord > failedRecords = null ;
List < SchedulerStateRecord > failedRecords = null ;
@ -3325,7 +3323,7 @@ public abstract class JobStoreSupport implements JobStore, Constants {
getLockHandler ( ) . obtainLock ( conn , LOCK_STATE_ACCESS ) ;
getLockHandler ( ) . obtainLock ( conn , LOCK_STATE_ACCESS ) ;
transStateOwner = true ;
transStateOwner = true ;
// Now that we own the lock, make sure we still have work to do.
// Now that we own the lock, make sure we still have work to do.
// The first time through, we also need to make sure we update/create our state record
// The first time through, we also need to make sure we update/create our state record
failedRecords = ( firstCheckIn ) ? clusterCheckIn ( conn ) : findFailedInstances ( conn ) ;
failedRecords = ( firstCheckIn ) ? clusterCheckIn ( conn ) : findFailedInstances ( conn ) ;
@ -3838,7 +3836,7 @@ public abstract class JobStoreSupport implements JobStore, Constants {
Connection conn = null ;
Connection conn = null ;
try {
try {
if ( lockName ! = null ) {
if ( lockName ! = null ) {
// If we aren't using db locks, then delay getting DB connection
// If we aren't using db locks, then delay getting DB connection
// until after acquiring the lock since it isn't needed.
// until after acquiring the lock since it isn't needed.
if ( getLockHandler ( ) . requiresConnection ( ) ) {
if ( getLockHandler ( ) . requiresConnection ( ) ) {
conn = getNonManagedTXConnection ( ) ;
conn = getNonManagedTXConnection ( ) ;
@ -4047,6 +4045,4 @@ public abstract class JobStoreSupport implements JobStore, Constants {
}
}
}
}
}
}
}
}
// EOF