SYMPTOM

The same delivery has two schedules for different periods. Sometimes these periods have conflicting occurences. When this happens, the delivery is executed twice.

For example:

  • Schedule 1: execute delivery1 every tuesday at 10am
  • Schedule 2: execute delivery1 every 5th month day, at 10am

=> When the 5th day of a month is a tuesday, delivery1 will execute twice.

SOLUTION

This is normal, considering the default configuration of the Scheduler.

When a scheduled job tries to start, it will wait for the other occurences to finish. If the "misfireThreshold" delay is reached then the awaiting job is cancelled. By default this delay is 60 seconds.

You can change this behavior in file stambiaRuntime/properties/engineScheduler.properties.

  • Create this file if it does not exist (copying engineScheduler.properties.sample)
  • Change this line:
    org.quartz.jobStore.misfireThreshold = 60000
    to
    org.quartz.jobStore.misfireThreshold = 1

=> the awaiting job is immediately cancelled (after 1 millisecond...).