Make Shutdown blocking to ensure outstanding requests completion #92
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.
Main change is in server
Shutdown
method semantics: upon callServe
(orLintenAndServe
will exit immediately butShutdown
will block until all outstanding transfers are completed or timed out.Hopefully it is effectively unnoticeable change for downstream code, but allows more straight-forward code, when
Serve
called in goroutine as e.g.:This become similar to Golang HTTP server shutdown logic.
Fixes #87
TestHookSuccess
runs one request and check that hook was called. That test its flaky because server exits before goroutine executes a hook.This change makes
Shutdown
blocking so when it completes the server is stopped all operations.