Search in sources :

Example 6 with ObjectAlreadyExistsException

use of org.quartz.ObjectAlreadyExistsException in project spring-framework by spring-projects.

the class SchedulerAccessor method addTriggerToScheduler.

/**
 * Add the given trigger to the Scheduler, if it doesn't already exist.
 * Overwrites the trigger in any case if "overwriteExistingJobs" is set.
 * @param trigger the trigger to add
 * @return {@code true} if the trigger was actually added,
 * {@code false} if it already existed before
 * @see #setOverwriteExistingJobs
 */
private boolean addTriggerToScheduler(Trigger trigger) throws SchedulerException {
    boolean triggerExists = (getScheduler().getTrigger(trigger.getKey()) != null);
    if (triggerExists && !this.overwriteExistingJobs) {
        return false;
    }
    // Check if the Trigger is aware of an associated JobDetail.
    JobDetail jobDetail = (JobDetail) trigger.getJobDataMap().remove("jobDetail");
    if (triggerExists) {
        if (jobDetail != null && this.jobDetails != null && !this.jobDetails.contains(jobDetail) && addJobToScheduler(jobDetail)) {
            this.jobDetails.add(jobDetail);
        }
        try {
            getScheduler().rescheduleJob(trigger.getKey(), trigger);
        } catch (ObjectAlreadyExistsException ex) {
            if (logger.isDebugEnabled()) {
                logger.debug("Unexpectedly encountered existing trigger on rescheduling, assumably due to " + "cluster race condition: " + ex.getMessage() + " - can safely be ignored");
            }
        }
    } else {
        try {
            if (jobDetail != null && this.jobDetails != null && !this.jobDetails.contains(jobDetail) && (this.overwriteExistingJobs || getScheduler().getJobDetail(jobDetail.getKey()) == null)) {
                getScheduler().scheduleJob(jobDetail, trigger);
                this.jobDetails.add(jobDetail);
            } else {
                getScheduler().scheduleJob(trigger);
            }
        } catch (ObjectAlreadyExistsException ex) {
            if (logger.isDebugEnabled()) {
                logger.debug("Unexpectedly encountered existing trigger on job scheduling, assumably due to " + "cluster race condition: " + ex.getMessage() + " - can safely be ignored");
            }
            if (this.overwriteExistingJobs) {
                getScheduler().rescheduleJob(trigger.getKey(), trigger);
            }
        }
    }
    return true;
}
Also used : JobDetail(org.quartz.JobDetail) ObjectAlreadyExistsException(org.quartz.ObjectAlreadyExistsException)

Example 7 with ObjectAlreadyExistsException

use of org.quartz.ObjectAlreadyExistsException in project weicoder by wdcode.

the class JobStoreSupport method storeCalendar.

protected void storeCalendar(Connection conn, String calName, Calendar calendar, boolean replaceExisting, boolean updateTriggers) throws JobPersistenceException {
    try {
        boolean existingCal = calendarExists(conn, calName);
        if (existingCal && !replaceExisting) {
            throw new ObjectAlreadyExistsException("Calendar with name '" + calName + "' already exists.");
        }
        if (existingCal) {
            if (getDelegate().updateCalendar(conn, calName, calendar) < 1) {
                throw new JobPersistenceException("Couldn't store calendar.  Update failed.");
            }
            if (updateTriggers) {
                List<OperableTrigger> trigs = getDelegate().selectTriggersForCalendar(conn, calName);
                for (OperableTrigger trigger : trigs) {
                    trigger.updateWithNewCalendar(calendar, getMisfireThreshold());
                    storeTrigger(conn, trigger, null, true, STATE_WAITING, false, false);
                }
            }
        } else {
            if (getDelegate().insertCalendar(conn, calName, calendar) < 1) {
                throw new JobPersistenceException("Couldn't store calendar.  Insert failed.");
            }
        }
        if (!isClustered) {
            // lazy-cache
            calendarCache.put(calName, calendar);
        }
    } catch (IOException e) {
        throw new JobPersistenceException("Couldn't store calendar because the BLOB couldn't be serialized: " + e.getMessage(), e);
    } catch (ClassNotFoundException e) {
        throw new JobPersistenceException("Couldn't store calendar: " + e.getMessage(), e);
    } catch (SQLException e) {
        throw new JobPersistenceException("Couldn't store calendar: " + e.getMessage(), e);
    }
}
Also used : OperableTrigger(org.quartz.spi.OperableTrigger) JobPersistenceException(org.quartz.JobPersistenceException) SQLException(java.sql.SQLException) IOException(java.io.IOException) ObjectAlreadyExistsException(org.quartz.ObjectAlreadyExistsException)

Example 8 with ObjectAlreadyExistsException

use of org.quartz.ObjectAlreadyExistsException in project weicoder by wdcode.

the class ExecutingJobsManager method triggerJob.

/**
 * <p>
 * Trigger the identified <code>{@link org.quartz.Job}</code> (execute it
 * now) - with a non-volatile trigger.
 * </p>
 */
public void triggerJob(JobKey jobKey, JobDataMap data) throws SchedulerException {
    validateState();
    OperableTrigger trig = (OperableTrigger) newTrigger().withIdentity(newTriggerId(), Scheduler.DEFAULT_GROUP).forJob(jobKey).build();
    trig.computeFirstFireTime(null);
    if (data != null) {
        trig.setJobDataMap(data);
    }
    boolean collision = true;
    while (collision) {
        try {
            resources.getJobStore().storeTrigger(trig, false);
            collision = false;
        } catch (ObjectAlreadyExistsException oaee) {
            trig.setKey(new TriggerKey(newTriggerId(), Scheduler.DEFAULT_GROUP));
        }
    }
    notifySchedulerThread(trig.getNextFireTime().getTime());
    notifySchedulerListenersSchduled(trig);
}
Also used : TriggerKey(org.quartz.TriggerKey) OperableTrigger(org.quartz.spi.OperableTrigger) ObjectAlreadyExistsException(org.quartz.ObjectAlreadyExistsException)

Example 9 with ObjectAlreadyExistsException

use of org.quartz.ObjectAlreadyExistsException in project weicoder by wdcode.

the class TriggerWrapper method storeCalendar.

/**
 * <p>
 * Store the given <code>{@link org.quartz.Calendar}</code>.
 * </p>
 *
 * @param calendar
 *          The <code>Calendar</code> to be stored.
 * @param replaceExisting
 *          If <code>true</code>, any <code>Calendar</code> existing
 *          in the <code>JobStore</code> with the same name & group
 *          should be over-written.
 * @param updateTriggers
 *          If <code>true</code>, any <code>Trigger</code>s existing
 *          in the <code>JobStore</code> that reference an existing
 *          Calendar with the same name with have their next fire time
 *          re-computed with the new <code>Calendar</code>.
 * @throws ObjectAlreadyExistsException
 *           if a <code>Calendar</code> with the same name already
 *           exists, and replaceExisting is set to false.
 */
public void storeCalendar(String name, Calendar calendar, boolean replaceExisting, boolean updateTriggers) throws ObjectAlreadyExistsException {
    calendar = (Calendar) calendar.clone();
    synchronized (lock) {
        Object obj = calendarsByName.get(name);
        if (obj != null && !replaceExisting) {
            throw new ObjectAlreadyExistsException("Calendar with name '" + name + "' already exists.");
        } else if (obj != null) {
            calendarsByName.remove(name);
        }
        calendarsByName.put(name, calendar);
        if (obj != null && updateTriggers) {
            for (TriggerWrapper tw : getTriggerWrappersForCalendar(name)) {
                OperableTrigger trig = tw.getTrigger();
                boolean removed = timeTriggers.remove(tw);
                trig.updateWithNewCalendar(calendar, getMisfireThreshold());
                if (removed) {
                    timeTriggers.add(tw);
                }
            }
        }
    }
}
Also used : OperableTrigger(org.quartz.spi.OperableTrigger) ObjectAlreadyExistsException(org.quartz.ObjectAlreadyExistsException)

Aggregations

ObjectAlreadyExistsException (org.quartz.ObjectAlreadyExistsException)9 JobDetail (org.quartz.JobDetail)4 SchedulerException (org.quartz.SchedulerException)4 OperableTrigger (org.quartz.spi.OperableTrigger)3 JobPersistenceException (org.quartz.JobPersistenceException)2 Trigger (org.quartz.Trigger)2 JobIdentifier (com.thinkbiganalytics.scheduler.JobIdentifier)1 QuartzScheduler (com.thinkbiganalytics.scheduler.QuartzScheduler)1 TriggerIdentifier (com.thinkbiganalytics.scheduler.TriggerIdentifier)1 DefaultJobIdentifier (com.thinkbiganalytics.scheduler.model.DefaultJobIdentifier)1 DefaultTriggerIdentifier (com.thinkbiganalytics.scheduler.model.DefaultTriggerIdentifier)1 IOException (java.io.IOException)1 NotSerializableException (java.io.NotSerializableException)1 SQLException (java.sql.SQLException)1 Date (java.util.Date)1 HashMap (java.util.HashMap)1 AtomicInteger (java.util.concurrent.atomic.AtomicInteger)1 OMElement (org.apache.axiom.om.OMElement)1 ManagedLifecycle (org.apache.synapse.ManagedLifecycle)1 SynapseEnvironment (org.apache.synapse.core.SynapseEnvironment)1