Shutdown task executor before aborting multipart uploads #1905
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.
There's a race condition in which multipart uploads can still be
kept alive because aborting a multipart uploads can happen while
existing tasks are still being executed. We must shutdown the
executor before we can then abort multipart uploads.
This order was correct in the normal shutdown case, but for
the case where a user 'Ctrl-C's the process or where unexpected
exceptions propogate back to the S3 handler, the order was reversed.
In other words, the race condition exposed two possibilities:
Proper cleanup:
Bad cleanup:
New behavior:
There's also a gap in test coverage here, so I've added a test case
for this case.
cc @kyleknap @JordonPhillips