fix(upload): return 4xx for upload errors and handle empty/final-chunk blobs instead of 500#138
Open
m-ferrero wants to merge 1 commit into
Open
fix(upload): return 4xx for upload errors and handle empty/final-chunk blobs instead of 500#138m-ferrero wants to merge 1 commit into
m-ferrero wants to merge 1 commit into
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Problem
Several blob-upload error paths surface as opaque 500s rather than the correct client error:
PUTis rejected by R2's checksum verification, which bubbles up as a 500 instead of a 400.PUTare not handled cleanly.Solution
DIGEST_INVALID(the unit test asserts the 400 body, so a future change in the runtime's error wording surfaces as a test failure rather than a silent regression to 500).PUTthrough the same path aPATCHuses, so small chunks are combined into a valid part and an out-of-order chunk is rejected with 416.Tests
Adds cases for the wrong-digest 400, the out-of-order chunk 416, the empty-blob (zero-byte) path, and the final-chunk-on-PUT path.
Part of #134.