Adds automatic reload of a service on any changes to the service configuration file.#281
Open
karinushka wants to merge 3 commits intoFedericoPonzi:masterfrom
Open
Adds automatic reload of a service on any changes to the service configuration file.#281karinushka wants to merge 3 commits intoFedericoPonzi:masterfrom
karinushka wants to merge 3 commits intoFedericoPonzi:masterfrom
Conversation
ee6e9bc to
4f71372
Compare
4f71372 to
8975f5f
Compare
e9f47d7 to
0222c55
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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: