Missed operation lists always run when the scheduler is reenabled

Matthew Clark 6 years ago • updated by anonymous 3 years ago 4

See PUBEB-75. If an operation list is due to run while the scheduler is disabled, the operation list will run as soon as the scheduler is reenabled, eg. once a week every Saturday night, scheduler disabled, the operation list runs on Monday when the schedule is reenabled.

This is because stopping the scheduler only stops the Timer in the PollingScheduleDecorator. The jobs are polled on the event that the timer is incremented, so this prevents the operation lists from running. However, the NextRun information of timings is not updated, and as such the timings say they are due to run.

The most ideal fix here would be to force timings to run CalculateNextRunAfterTime when the schedule is reenabled to recalculate their next run information. For operation lists marked as QueueMissed, these will need to be added to the queue and executed when the scheduler is reenabled. Although the changes may be minor, they have potentially far reaching effects, and all scheduling options should be thoroughly regression tested following the changes.

This issue will also affect Identity Broker 4.

Our consultants are happy with the behaviour as long as it's consistent. They would like to be alerted if something has been missed, but this is another issue.

Please make the behaviour of the scheduler being disabled the same as for individual operation lists.

We should also rename "queue on missed" to "queue when blocked". This change should be reflected in documentation.


Tony, update/resolve/whatever this accordingly.

This has been tested and confirmed in the latest EventBroker build.