This repository has been archived by the owner on Dec 16, 2022. It is now read-only.
Feature: Move schedule monitoring to its own thread #4
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Previous Architecture
Previous, every 30 cycles through the sentinel guard loop, the database was queried for schedules which need to be run. This assumed the guard loop was executed at once per second and also adds additional unnecessary work roughly every 30 seconds.
New Architecture
With this change, the scheduler check is preformed in a dedicated thread, which blocks for 60s, then queries the database. As the highest resolution of schedules is one minute, this means the check is done as infrequently as possible.
Considerations
There will be some slight time drift, as the call to
scheduler
is not a zero-time call, but the drift should be in the order of milliseconds and we're not a hard real time scheduling system here.