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.
When I got this error it was because I registered the job with myJobClass.getClass() but I had guice wrap an interceptor around the class so the class name missmatched (i.e the runtime class was ...$$EnhancerByGuice$$13db15). Something similar may happen with Spring.
Try scheduling a job with
instead of
From quartz-scheduler.org :
How-To: Scheduling a Job in 2.1.x and How-To: Scheduling a Job in 2.2.x
The code is the same for two versions
Anyway, the exception is thrown only if quartz can not retrieve a
JobDetail
for the trigger's jobkey during the trigger store atstoreTrigger
method....
so your error is very strange because the jobkey is assigned previously at
forJob
method in theTriggerBuilder
classtry scheduling the job with
first as suggested before, if does not work you should debug your code and check the job keys, if your keys are right maybe the problem is not in your code and is a quartz configuration mismatch.