protected void signalSchedulingChangeImmediately(long candidateNewNextFireTime) { schedSignaler.signalSchedulingChange(candidateNewNextFireTime); }
private void doUpdateOfMisfiredTrigger(Connection conn, OperableTrigger trig, boolean forceState, String newStateIfNotComplete, boolean recovering) throws JobPersistenceException { Calendar cal = null; if (trig.getCalendarName() != null) { cal = retrieveCalendar(conn, trig.getCalendarName()); } schedSignaler.notifyTriggerListenersMisfired(trig); trig.updateAfterMisfire(cal); if (trig.getNextFireTime() == null) { storeTrigger(conn, trig, null, true, STATE_COMPLETE, forceState, recovering); schedSignaler.notifySchedulerListenersFinalized(trig); } else { storeTrigger(conn, trig, null, true, newStateIfNotComplete, forceState, recovering); } }
if ((trigs == null || trigs.size() == 0) && !jw.jobDetail.isDurable()) { if (removeJob(jw.key)) { signaler.notifySchedulerListenersJobDeleted(jw.key);
earliestNewTime = trig.getNextFireTime().getTime(); signaler.notifyTriggerListenersMisfired(trig);
protected boolean updateMisfiredTrigger(Connection conn, SchedulingContext ctxt, String triggerName, String groupName, String newStateIfNotComplete, boolean forceState) // TODO: probably // get rid of // this throws JobPersistenceException { try { Trigger trig = retrieveTrigger(conn, triggerName, groupName); long misfireTime = System.currentTimeMillis(); if (getMisfireThreshold() > 0) { misfireTime -= getMisfireThreshold(); } if (trig.getNextFireTime().getTime() > misfireTime) { return false; } doUpdateOfMisfiredTrigger(conn, ctxt, trig, forceState, newStateIfNotComplete, false); signaler.notifySchedulerListenersFinalized(trig); return true; } catch (Exception e) { throw new JobPersistenceException( "Couldn't update misfired trigger '" + groupName + "." + triggerName + "': " + e.getMessage(), e); } }
protected <T> T retryExecuteInNonManagedTXLock(String lockName, TransactionCallback<T> txCallback) { for (int retry = 1; !shutdown; retry++) { try { return executeInNonManagedTXLock(lockName, txCallback, null); } catch (JobPersistenceException jpe) { if(retry % 4 == 0) { schedSignaler.notifySchedulerListenersError("An error occurred while " + txCallback, jpe); } } catch (RuntimeException e) { getLog().error("retryExecuteInNonManagedTXLock: RuntimeException " + e.getMessage(), e); } try { Thread.sleep(getDbRetryInterval()); // retry every N seconds (the db connection must be failed) } catch (InterruptedException e) { throw new IllegalStateException("Received interrupted exception", e); } } throw new IllegalStateException("JobStore is shutdown - aborting retry"); }
earliestNewTime = trig.getNextFireTime().getTime(); signaler.notifyTriggerListenersMisfired(trig);
protected boolean updateMisfiredTrigger(Connection conn, SchedulingContext ctxt, String triggerName, String groupName, String newStateIfNotComplete, boolean forceState) // TODO: probably // get rid of // this throws JobPersistenceException { try { Trigger trig = getDelegate().selectTrigger(conn, triggerName, groupName); long misfireTime = System.currentTimeMillis(); if (getMisfireThreshold() > 0) { misfireTime -= getMisfireThreshold(); } if (trig.getNextFireTime().getTime() > misfireTime) { return false; } doUpdateOfMisfiredTrigger(conn, ctxt, trig, forceState, newStateIfNotComplete, false); signaler.notifySchedulerListenersFinalized(trig); return true; } catch (Exception e) { throw new JobPersistenceException( "Couldn't update misfired trigger '" + groupName + "." + triggerName + "': " + e.getMessage(), e); } }
protected <T> T retryExecuteInNonManagedTXLock(String lockName, TransactionCallback<T> txCallback) { for (int retry = 1; !shutdown; retry++) { try { return executeInNonManagedTXLock(lockName, txCallback, null); } catch (JobPersistenceException jpe) { if(retry % 4 == 0) { schedSignaler.notifySchedulerListenersError("An error occurred while " + txCallback, jpe); } } catch (RuntimeException e) { getLog().error("retryExecuteInNonManagedTXLock: RuntimeException " + e.getMessage(), e); } try { Thread.sleep(getDbRetryInterval()); // retry every N seconds (the db connection must be failed) } catch (InterruptedException e) { throw new IllegalStateException("Received interrupted exception", e); } } throw new IllegalStateException("JobStore is shutdown - aborting retry"); }
protected void signalSchedulingChangeImmediately(long candidateNewNextFireTime) { schedSignaler.signalSchedulingChange(candidateNewNextFireTime); }
private void doUpdateOfMisfiredTrigger(Connection conn, OperableTrigger trig, boolean forceState, String newStateIfNotComplete, boolean recovering) throws JobPersistenceException { Calendar cal = null; if (trig.getCalendarName() != null) { cal = retrieveCalendar(conn, trig.getCalendarName()); } schedSignaler.notifyTriggerListenersMisfired(trig); trig.updateAfterMisfire(cal); if (trig.getNextFireTime() == null) { storeTrigger(conn, trig, null, true, STATE_COMPLETE, forceState, recovering); schedSignaler.notifySchedulerListenersFinalized(trig); } else { storeTrigger(conn, trig, null, true, newStateIfNotComplete, forceState, recovering); } }
private void doUpdateOfMisfiredTrigger(Connection conn, SchedulingContext ctxt, Trigger trig, boolean forceState, String newStateIfNotComplete, boolean recovering) throws JobPersistenceException { Calendar cal = null; if (trig.getCalendarName() != null) { cal = retrieveCalendar(conn, ctxt, trig.getCalendarName()); } signaler.notifyTriggerListenersMisfired(trig); trig.updateAfterMisfire(cal); if (trig.getNextFireTime() == null) { storeTrigger(conn, ctxt, trig, null, true, STATE_COMPLETE, forceState, recovering); } else { storeTrigger(conn, ctxt, trig, null, true, newStateIfNotComplete, forceState, false); } }
if ((trigs == null || trigs.size() == 0) && !jw.jobDetail.isDurable()) { if (removeJob(jw.key)) { signaler.notifySchedulerListenersJobDeleted(jw.key);
protected void notifySchedulerThread(long candidateNewNextFireTime) { if (isSignalOnSchedulingChange()) { signaler.signalSchedulingChange(candidateNewNextFireTime); } }
protected boolean applyMisfire(TriggerWrapper tw) { long misfireTime = System.currentTimeMillis(); if (getMisfireThreshold() > 0) { misfireTime -= getMisfireThreshold(); } Date tnft = tw.trigger.getNextFireTime(); if (tnft == null || tnft.getTime() > misfireTime || tw.trigger.getMisfireInstruction() == Trigger.MISFIRE_INSTRUCTION_IGNORE_MISFIRE_POLICY) { return false; } Calendar cal = null; if (tw.trigger.getCalendarName() != null) { cal = retrieveCalendar(tw.trigger.getCalendarName()); } signaler.notifyTriggerListenersMisfired((OperableTrigger)tw.trigger.clone()); tw.trigger.updateAfterMisfire(cal); if (tw.trigger.getNextFireTime() == null) { tw.state = TriggerWrapper.STATE_COMPLETE; signaler.notifySchedulerListenersFinalized(tw.trigger); synchronized (lock) { timeTriggers.remove(tw); } } else if (tnft.equals(tw.trigger.getNextFireTime())) { return false; } return true; }
private void doUpdateOfMisfiredTrigger(Connection conn, SchedulingContext ctxt, Trigger trig, boolean forceState, String newStateIfNotComplete, boolean recovering) throws JobPersistenceException { Calendar cal = null; if (trig.getCalendarName() != null) { cal = retrieveCalendar(conn, ctxt, trig.getCalendarName()); } signaler.notifyTriggerListenersMisfired(trig); trig.updateAfterMisfire(cal); if (trig.getNextFireTime() == null) { storeTrigger(conn, ctxt, trig, null, true, STATE_COMPLETE, forceState, recovering); } else { storeTrigger(conn, ctxt, trig, null, true, newStateIfNotComplete, forceState, false); } }
JobKey jobKey = tw.getJobKey(); if (removeJob(jobKey)) { signaler.notifySchedulerListenersJobDeleted(jobKey);
protected void notifySchedulerThread(long candidateNewNextFireTime) { if (isSignalOnSchedulingChange()) { signaler.signalSchedulingChange(candidateNewNextFireTime); } }
protected boolean applyMisfire(TriggerWrapper tw) { long misfireTime = System.currentTimeMillis(); if (getMisfireThreshold() > 0) { misfireTime -= getMisfireThreshold(); } Date tnft = tw.trigger.getNextFireTime(); if (tnft == null || tnft.getTime() > misfireTime || tw.trigger.getMisfireInstruction() == Trigger.MISFIRE_INSTRUCTION_IGNORE_MISFIRE_POLICY) { return false; } Calendar cal = null; if (tw.trigger.getCalendarName() != null) { cal = retrieveCalendar(tw.trigger.getCalendarName()); } signaler.notifyTriggerListenersMisfired((OperableTrigger)tw.trigger.clone()); tw.trigger.updateAfterMisfire(cal); if (tw.trigger.getNextFireTime() == null) { tw.state = TriggerWrapper.STATE_COMPLETE; signaler.notifySchedulerListenersFinalized(tw.trigger); synchronized (lock) { timeTriggers.remove(tw); } } else if (tnft.equals(tw.trigger.getNextFireTime())) { return false; } return true; }
JobKey jobKey = tw.getJobKey(); if (removeJob(jobKey)) { signaler.notifySchedulerListenersJobDeleted(jobKey);