@Override public void addProgramSchedule(ProgramSchedule schedule) throws AlreadyExistsException, SchedulerException { if (containsTimeTrigger(schedule)) { timeScheduler.addProgramSchedule(schedule); } }
@Override public List<ScheduledRuntime> getAllScheduledRunTimes(ProgramId program, SchedulableProgramType programType, long startTimeSecs, long endTimeSecs) throws SchedulerException { return timeScheduler.getAllScheduledRunTimes(program, programType, startTimeSecs, endTimeSecs); }
/** * Start the scheduler services, by initializing them and starting them */ protected final void startSchedulers() throws SchedulerException { try { timeScheduler.init(); timeScheduler.start(); LOG.info("Started time scheduler"); } catch (SchedulerException t) { Throwables.propagateIfPossible(t, SchedulerException.class); throw new SchedulerException(t); } }
public void suspendProgramSchedule(ProgramSchedule schedule) throws NotFoundException, SchedulerException { try { Collection<TriggerKey> triggerKeys = getGroupedTriggerKeys(schedule); // Must assert all trigger keys exist before processing each trigger key assertTriggerKeysExist(triggerKeys); for (TriggerKey triggerKey : triggerKeys) { scheduler.pauseTrigger(triggerKey); } } catch (org.quartz.SchedulerException e) { throw new SchedulerException(e); } }
@Test public void testNextSchedule() throws Exception { // a schedule to be triggered every 5 minutes ProgramSchedule sched = new ProgramSchedule("tsched11", "two times schedule", PROG1_ID, ImmutableMap.of("prop2", "xx"), new TimeTrigger("*/5 * * * *"), Collections.emptyList()); timeScheduler.addProgramSchedule(sched); // schedule is by default SUSPENDED after being added, resume it to enable the schedule timeScheduler.resumeProgramSchedule(sched); long currentTimeInSeconds = TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis()); long startTimeInSeconds = currentTimeInSeconds + TimeUnit.HOURS.toSeconds(1); long endTimeInSeconds = currentTimeInSeconds + TimeUnit.HOURS.toSeconds(3); List<ScheduledRuntime> nextRuntimes = timeScheduler.getAllScheduledRunTimes(PROG1_ID, SchedulableProgramType.WORKFLOW, startTimeInSeconds, endTimeInSeconds); // for a scan range of 1pm to 3pm. since start time is inclusive, from 1pm tp 2pm we will have 13 schedules // and from 2:05 pm to 2:55pm will have 11 schedules as end time is exclusive. in total we expect 24 schedules. Assert.assertEquals(24, nextRuntimes.size()); } }
public void addProgramSchedule(ProgramSchedule schedule) throws AlreadyExistsException, SchedulerException { // Verify every trigger does not exist first before adding any of them to Quartz scheduler try { Map<String, TriggerKey> cronTriggerKeyMap = getCronTriggerKeyMap(schedule); for (TriggerKey triggerKey : cronTriggerKeyMap.values()) { assertTriggerDoesNotExist(triggerKey); } ProgramId program = schedule.getProgramId(); SchedulableProgramType programType = program.getType().getSchedulableType(); JobDetail job = addJob(program, programType); for (Map.Entry<String, TriggerKey> entry : cronTriggerKeyMap.entrySet()) { scheduleJob(entry.getValue(), schedule.getName(), entry.getKey(), job); } } catch (org.quartz.SchedulerException e) { throw new SchedulerException(e); } }
public void deleteProgramSchedule(ProgramSchedule schedule) throws NotFoundException, SchedulerException { try { Collection<TriggerKey> triggerKeys = getGroupedTriggerKeys(schedule); // Must assert all trigger keys exist before processing each trigger key assertTriggerKeysExist(triggerKeys); for (TriggerKey triggerKey : triggerKeys) { Trigger trigger = getTrigger(triggerKey, schedule.getProgramId(), schedule.getName()); scheduler.unscheduleJob(trigger.getKey()); JobKey jobKey = trigger.getJobKey(); if (scheduler.getTriggersOfJob(jobKey).isEmpty()) { scheduler.deleteJob(jobKey); } } } catch (org.quartz.SchedulerException e) { throw new SchedulerException(e); } }
@Override public void resumeProgramSchedule(ProgramSchedule schedule) throws NotFoundException, SchedulerException { if (containsTimeTrigger(schedule)) { timeScheduler.resumeProgramSchedule(schedule); } }
void init() throws SchedulerException { try { taskExecutorService = MoreExecutors.listeningDecorator( Executors.newCachedThreadPool(Threads.createDaemonThreadFactory("time-schedule-task"))); scheduler = schedulerSupplier.get(); scheduler.setJobFactory(createJobFactory()); } catch (org.quartz.SchedulerException e) { throw new SchedulerException(e); } }
@Override public void deleteProgramSchedule(ProgramSchedule schedule) throws NotFoundException, SchedulerException { if (containsTimeTrigger(schedule)) { timeScheduler.deleteProgramSchedule(schedule); } }
public void addProgramSchedule(ProgramSchedule schedule) throws AlreadyExistsException, SchedulerException { // Verify every trigger does not exist first before adding any of them to Quartz scheduler try { Map<String, TriggerKey> cronTriggerKeyMap = getCronTriggerKeyMap(schedule); for (TriggerKey triggerKey : cronTriggerKeyMap.values()) { assertTriggerDoesNotExist(triggerKey); } ProgramId program = schedule.getProgramId(); SchedulableProgramType programType = program.getType().getSchedulableType(); JobDetail job = addJob(program, programType); for (Map.Entry<String, TriggerKey> entry : cronTriggerKeyMap.entrySet()) { scheduleJob(entry.getValue(), schedule.getName(), entry.getKey(), job); } } catch (org.quartz.SchedulerException e) { throw new SchedulerException(e); } }
public void deleteProgramSchedule(ProgramSchedule schedule) throws NotFoundException, SchedulerException { try { Collection<TriggerKey> triggerKeys = getGroupedTriggerKeys(schedule); // Must assert all trigger keys exist before processing each trigger key assertTriggerKeysExist(triggerKeys); for (TriggerKey triggerKey : triggerKeys) { Trigger trigger = getTrigger(triggerKey, schedule.getProgramId(), schedule.getName()); scheduler.unscheduleJob(trigger.getKey()); JobKey jobKey = trigger.getJobKey(); if (scheduler.getTriggersOfJob(jobKey).isEmpty()) { scheduler.deleteJob(jobKey); } } } catch (org.quartz.SchedulerException e) { throw new SchedulerException(e); } }
public void suspendProgramSchedule(ProgramSchedule schedule) throws NotFoundException, SchedulerException { try { Collection<TriggerKey> triggerKeys = getGroupedTriggerKeys(schedule); // Must assert all trigger keys exist before processing each trigger key assertTriggerKeysExist(triggerKeys); for (TriggerKey triggerKey : triggerKeys) { scheduler.pauseTrigger(triggerKey); } } catch (org.quartz.SchedulerException e) { throw new SchedulerException(e); } }
@Override public void resumeProgramSchedule(ProgramSchedule schedule) throws NotFoundException, SchedulerException { if (containsTimeTrigger(schedule)) { timeScheduler.resumeProgramSchedule(schedule); } }
void init() throws SchedulerException { try { taskExecutorService = MoreExecutors.listeningDecorator( Executors.newCachedThreadPool(Threads.createDaemonThreadFactory("time-schedule-task"))); scheduler = schedulerSupplier.get(); scheduler.setJobFactory(createJobFactory()); } catch (org.quartz.SchedulerException e) { throw new SchedulerException(e); } }
@Override public void deleteProgramSchedule(ProgramSchedule schedule) throws NotFoundException, SchedulerException { if (containsTimeTrigger(schedule)) { timeScheduler.deleteProgramSchedule(schedule); } }
/** * Start the scheduler services, by initializing them and starting them */ protected final void startSchedulers() throws SchedulerException { try { timeScheduler.init(); timeScheduler.start(); LOG.info("Started time scheduler"); } catch (SchedulerException t) { Throwables.propagateIfPossible(t, SchedulerException.class); throw new SchedulerException(t); } }
public void resumeProgramSchedule(ProgramSchedule schedule) throws NotFoundException, SchedulerException { try { Collection<TriggerKey> triggerKeys = getGroupedTriggerKeys(schedule); // Must assert all trigger keys exist before processing each trigger key assertTriggerKeysExist(triggerKeys); for (TriggerKey triggerKey : triggerKeys) { if (triggerKey.getGroup().equals(PAUSED_NEW_TRIGGERS_GROUP)) { Trigger neverScheduledTrigger = scheduler.getTrigger(triggerKey); TriggerBuilder<? extends Trigger> triggerBuilder = neverScheduledTrigger.getTriggerBuilder(); // move this key from TimeScheduler#PAUSED_NEW_TRIGGERS_GROUP to the Key#DEFAULT_GROUP group // (when no group name is provided default is used) Trigger resumedTrigger = triggerBuilder.withIdentity(triggerKey.getName()).build(); scheduler.rescheduleJob(neverScheduledTrigger.getKey(), resumedTrigger); triggerKey = resumedTrigger.getKey(); } scheduler.resumeTrigger(triggerKey); } } catch (org.quartz.SchedulerException e) { throw new SchedulerException(e); } }
@Override public void addProgramSchedule(ProgramSchedule schedule) throws AlreadyExistsException, SchedulerException { if (containsTimeTrigger(schedule)) { timeScheduler.addProgramSchedule(schedule); } }
@Override public List<ScheduledRuntime> getAllScheduledRunTimes(ProgramId program, SchedulableProgramType programType, long startTimeSecs, long endTimeSecs) throws SchedulerException { return timeScheduler.getAllScheduledRunTimes(program, programType, startTimeSecs, endTimeSecs); }