GH-44334: [C++] Fix S3 error handling in ObjectOutputStream
#44335
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.
Rationale for this change
See #GH-44334. Errors from the AWS SDK are not correctly propagated onto the user of the
ObjectOutputStream
, not indicating an error even though there was one in some cases.What changes are included in this PR?
HandleUploadUsingSingleRequestOutcome
aswell asHandleUploadPartOutcome
instead of wrapping it in a arrowResult
class which has been constructed implictily, always indicating success.Close
so that the output stream is closed if there was an error in any of the called methods. Otherwise, destructing the output stream in debug builds fails as we abort ifClose()
returns something else thanStatus::OK()
. See the code pointer here.Are these changes tested?
Close()
in casedelayed_open
is enabled.Are there any user-facing changes?
No.