Adds automatic reload of a service on any changes to the service configuration file. #281
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.
Motivation and Context
This change adds a watcher for all service configuration files and if it detects a content change it will issue a reload event, restarting the service with potential new configuration parameters or flags.
This is quite useful for a long-running Horust process with a bunch of services and not needing to restart all
of them just to change a single service.
This is somewhat similar to the Reload configuration on signal received issue, although the reload happens on a configuration file change and not a signal.
Description
The change uses
notifycrate to register a watcher for all service toml files and if a content change happens it issues a Reload event into the main event loop.From here the file contents are loaded and replaced into the
ServiceHandlerwith areload_configflag set. Service is restarted using the normalKillevent andInKillingstates. The difference is that when service enters theSuccessstate at the end of the restart, it checks thereload_configflag and starts the service again.How Has This Been Tested?
So far I've tested it with running a few
sleepprocesses and trying to restart them with a different seconds parameter - verifying that they get restarted with new parameters.Types of changes
Checklist: