SchedulerAccessor catches cluster race conditions on job rescheduling

Issue: SPR-17114
This commit is contained in:
Juergen Hoeller 2018-08-02 14:30:02 +02:00
parent b5c691bdac
commit fa97aab8be
1 changed files with 11 additions and 3 deletions

View File

@ -310,7 +310,15 @@ public abstract class SchedulerAccessor implements ResourceLoaderAware {
!this.jobDetails.contains(jobDetail) && addJobToScheduler(jobDetail)) {
this.jobDetails.add(jobDetail);
}
getScheduler().rescheduleJob(trigger.getKey(), trigger);
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 {
@ -325,8 +333,8 @@ public abstract class SchedulerAccessor implements ResourceLoaderAware {
}
catch (ObjectAlreadyExistsException ex) {
if (logger.isDebugEnabled()) {
logger.debug("Unexpectedly found existing trigger, assumably due to cluster race condition: " +
ex.getMessage() + " - can safely be ignored");
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);