Browse Source

SchedulerAccessor catches cluster race conditions on job rescheduling

Issue: SPR-17114
pull/1915/head
Juergen Hoeller 7 years ago
parent
commit
fa97aab8be
  1. 12
      spring-context-support/src/main/java/org/springframework/scheduling/quartz/SchedulerAccessor.java

12
spring-context-support/src/main/java/org/springframework/scheduling/quartz/SchedulerAccessor.java

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

Loading…
Cancel
Save