Fixed: #1645 Impossible to shut down server before it has started #1646
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.
Added a new method
decommission
toServer
. This method allows you to shut down the server without caring about if it has already started or not. This avoids the need to wait in a loop for the server thread to be finished starting up before you can safely do operations that could decide to stop it.Waiting for the server thread to finish starting is convenient with
Server::wait_until_ready
, but if the server thread performs initializations that could throw exceptions, causing the server to never start up, callingwait_until_ready
will hang the program. The only way to guarantee this won't happen in any possible ordering of events is to have an operation that will causelisten_*
to exit immediately, whether or not it is called before or after. That is whatdecommission
provides.Fixes: #1645