Use context to cancel in-flight requests #192
Merged
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.
Now that client-go supports a context parameter we can actually support it in chaoskube as well.
I've never used context for anything else other than signal handling (like in chaoskube's main loop) and request timeouts. Both could be applied here but for now I'll use it for the former.
Before, if for some reason the call to the Kubernetes API was hanging, hitting Ctrl+C would just not work. Although the top-level context would have its cancel func called, we'd never read the Done channel until the request is completed, e.g. via some timeout.
Now, the top-level cancellable context is propagated down to client-go and Ctrl+C will actually preempt long running requests and the program can terminate immediately.