I'm having some trouble successfully scheduling a job without getting the error mentioned in the title, specifically: The job (CRAWLS.my_repos) referenced by the trigger does not exist. [See nested exception: org.quartz.JobPersistenceException: The job (CRAWLS.my_repos) referenced by the trigger does not exist.]
Here's a look at the code...of which, everything seems like it should be okay.
The runJob method...the main thing to notice is that it's failing in this line: m_scheduler.scheduleJob(trigger);
The rest of the method is there in case the rest of it would be useful.
public void runJob(JobInfo jobInfo,
com.lawson.search.spi.common.Properties jobProperties)
{
try {
JobDataMap jobDataMap = QuartzUtils.createJobDataMapFromLesProperties(jobProperties);
if (jobExists(jobInfo)) {
m_scheduler.triggerJob(jobKey(jobInfo.getName(), jobInfo.getGroup()), jobDataMap);
} else {
JobDetail job = QuartzUtils.createJobDetailFromJobInfo(jobInfo);
Trigger trigger = newTrigger()
.forJob(job)
.withIdentity(getImmediateTriggerName(jobInfo))
.build();
m_scheduler.scheduleJob(trigger);
}
} catch (SchedulerException e) {
String msg = "runJob: " + jobInfo;
if (s_log.isDebugEnabled()) {
s_log.debug(msg, e);
}
throw new JobSchedulerException(msg, e);
}
}
The createJobDetailFromJobInfo()
method is simple, but important:
static JobDetail createJobDetailFromJobInfo(JobInfo theJobInfo)
{
JobDetail detail = newJob(QuartzJobAdapter.class)
.withIdentity(theJobInfo.getName(), theJobInfo.getGroup())
.storeDurably()
.build();
return detail;
}
The only other important method that I can think of would be the getImmediateTriggerName()
method which I think may be causing an issue...but I don't know why.
private String getImmediateTriggerName(JobInfo jobInfo)
{
return jobInfo.getName() + "#" + jobInfo.getGroup() + ":" + System.currentTimeMillis();
}
Any help would be appreciated.