Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | Implement ListMultipartUploads (#171) | Quentin | 2022-01-12 | 1 | -1/+1 |
| | | | | | | | | | | | | | | | | | | | | | | | Implement ListMultipartUploads, also refactor ListObjects and ListObjectsV2. It took me some times as I wanted to propose the following things: - Using an iterator instead of the loop+goto pattern. I find it easier to read and it should enable some optimizations. For example, when consuming keys of a common prefix, we do many [redundant checks](https://git.deuxfleurs.fr/Deuxfleurs/garage/src/branch/main/src/api/s3_list.rs#L125-L156) while the only thing to do is to [check if the following key is still part of the common prefix](https://git.deuxfleurs.fr/Deuxfleurs/garage/src/branch/feature/s3-multipart-compat/src/api/s3_list.rs#L476). - Try to name things (see ExtractionResult and RangeBegin enums) and to separate concerns (see ListQuery and Accumulator) - An IO closure to make unit tests possibles. - Unit tests, to track regressions and document how to interact with the code - Integration tests with `s3api`. In the future, I would like to move them in Rust with the aws rust SDK. Merging of the logic of ListMultipartUploads and ListObjects was not a goal but a consequence of the previous modifications. Some points that we might want to discuss: - ListObjectsV1, when using pagination and delimiters, has a weird behavior (it lists multiple times the same prefix) with `aws s3api` due to the fact that it can not use our optimization to skip the whole prefix. It is independant from my refactor and can be tested with the commented `s3api` tests in `test-smoke.sh`. It probably has the same weird behavior on the official AWS S3 implementation. - Considering ListMultipartUploads, I had to "abuse" upload id marker to support prefix skipping. I send an `upload-id-marker` with the hardcoded value `include` to emulate your "including" token. - Some ways to test ListMultipartUploads with existing software (my tests are limited to s3api for now). Co-authored-by: Quentin Dufour <quentin@deuxfleurs.fr> Reviewed-on: https://git.deuxfleurs.fr/Deuxfleurs/garage/pulls/171 Co-authored-by: Quentin <quentin@dufour.io> Co-committed-by: Quentin <quentin@dufour.io> | ||||
* | Fix some error codes | Alex Auvolat | 2022-01-05 | 1 | -8/+8 |
| | |||||
* | New model for buckets | Alex Auvolat | 2022-01-04 | 1 | -22/+22 |
| | |||||
* | add proper request router for s3 api (#163) | trinity-1686a | 2021-12-06 | 1 | -6/+1 |
| | | | | | | | | | | | | | fix #161 Current request router was organically grown, and is getting messier and messier with each addition. This router cover exaustively existing API endpoints (with exceptions listed in [#161(comment)](https://git.deuxfleurs.fr/Deuxfleurs/garage/issues/161#issuecomment-1773) either because new and old api endpoint can't feasabily be differentied, or it's more lambda than s3). Co-authored-by: Trinity Pointard <trinity.pointard@gmail.com> Reviewed-on: https://git.deuxfleurs.fr/Deuxfleurs/garage/pulls/163 Reviewed-by: Alex <alex@adnab.me> Co-authored-by: trinity-1686a <trinity.pointard@gmail.com> Co-committed-by: trinity-1686a <trinity.pointard@gmail.com> | ||||
* | Fix clippy lints (fix #121) | Alex Auvolat | 2021-10-26 | 1 | -5/+5 |
| | |||||
* | Improved XML serializationbetter_xml | Alex Auvolat | 2021-05-06 | 1 | -35/+17 |
| | | | | | | - Use quick_xml and serde for all XML response returned by the S3 API. - Include tests for all structs used to generate XML - Remove old manual XML escaping function which was unsafe | ||||
* | rename types to CamelCase | Trinity Pointard | 2021-05-03 | 1 | -3/+3 |
| | |||||
* | fix clippy warnings on api | Trinity Pointard | 2021-05-03 | 1 | -16/+20 |
| | |||||
* | Update dependencies | Alex Auvolat | 2021-03-16 | 1 | -4/+4 |
| | |||||
* | Time and metadata improvements | Alex Auvolat | 2021-03-15 | 1 | -4/+22 |
| | |||||
* | Fix race condition | Alex Auvolat | 2021-03-15 | 1 | -19/+24 |
| | |||||
* | Implement table gc, currently for block_ref and version only | Alex Auvolat | 2021-03-12 | 1 | -3/+1 |
| | |||||
* | Fix merkle updater not being notified; improved logging | Alex Auvolat | 2021-03-12 | 1 | -2/+2 |
| | |||||
* | Very minor changes | Alex Auvolat | 2021-03-10 | 1 | -6/+4 |
| | |||||
* | Correctly implement CompleteMultipartUpload with etag check of parts | Alex Auvolat | 2021-03-10 | 1 | -19/+30 |
| | |||||
* | Switch to blake2 sum for identifying blocks by their data | Alex Auvolat | 2021-03-10 | 1 | -27/+27 |
| | |||||
* | Refactor model stuff, including cleaner CRDTs | Alex Auvolat | 2021-03-10 | 1 | -18/+19 |
| | |||||
* | Cargo fmt | Alex Auvolat | 2021-02-23 | 1 | -8/+23 |
| | |||||
* | rename hash() to sha256sum(), we might want to change it at some places | Alex Auvolat | 2021-02-21 | 1 | -15/+15 |
| | |||||
* | Add verification of part numbers in CompleteMultipartUpload (WIP #30) | Alex Auvolat | 2021-02-20 | 1 | -7/+52 |
| | |||||
* | S3 compatibility: return 404 instead of 400 on some multipart commands | Alex Auvolat | 2021-02-19 | 1 | -13/+3 |
| | |||||
* | Fix #28, extra headers being ignored (because of profound stupidity) | Alex Auvolat | 2021-02-19 | 1 | -1/+3 |
| | |||||
* | Small improvements in the S3 put workflow | Alex Auvolat | 2021-02-19 | 1 | -39/+70 |
| | |||||
* | Propose ETag fixbug/etag | Alex Auvolat | 2020-12-05 | 1 | -1/+16 |
| | |||||
* | Small optimisation | Alex Auvolat | 2020-11-29 | 1 | -1/+1 |
| | |||||
* | ETag patch | Alex Auvolat | 2020-11-29 | 1 | -3/+7 |
| | |||||
* | Small refactorings | Alex Auvolat | 2020-11-29 | 1 | -8/+2 |
| | |||||
* | Also check hash for < 3KB filesbug/checksums | Quentin | 2020-11-22 | 1 | -0/+14 |
| | |||||
* | Fix base64/hex checksum comparison | Quentin | 2020-11-22 | 1 | -44/+52 |
| | |||||
* | Convert bucket table to better CRDT representation | Alex Auvolat | 2020-11-20 | 1 | -1/+1 |
| | |||||
* | Replace with option syntaxic sugar | Quentin | 2020-11-11 | 1 | -24/+10 |
| | |||||
* | Refactor error management in API parterror-refactoring | Alex Auvolat | 2020-11-08 | 1 | -17/+15 |
| | |||||
* | trace test | Alex Auvolat | 2020-07-15 | 1 | -0/+8 |
| | |||||
* | pretty | Alex Auvolat | 2020-07-15 | 1 | -6/+9 |
| | |||||
* | Validate content MD5 and SHA256 sums for PutObject and UploadPart | Alex Auvolat | 2020-07-15 | 1 | -15/+63 |
| | |||||
* | Implement correct ETag for objects created with PutObject | Alex Auvolat | 2020-07-13 | 1 | -8/+20 |
| | |||||
* | More headers taken into account | Alex Auvolat | 2020-07-09 | 1 | -8/+25 |
| | |||||
* | cargo fmt | Alex Auvolat | 2020-07-08 | 1 | -45/+50 |
| | |||||
* | Migrate S3 api to use new model | Alex Auvolat | 2020-07-08 | 1 | -28/+44 |
| | |||||
* | Update to Hyper 0.13.6 that accepts non-Sync streams in wrap_stream. | Alex Auvolat | 2020-07-07 | 1 | -12/+11 |
| | | | | Simplifies code and makes it possible to publish on crates.io | ||||
* | Rename garage_core to garage_model | Alex Auvolat | 2020-07-07 | 1 | -5/+5 |
| | |||||
* | Slightly improved S3 compatibility | Alex Auvolat | 2020-05-01 | 1 | -3/+5 |
| | | | | | | | | - ListBucket does not require any of the parameters (delimiter, prefix, max-keys, etc) - URLs are properly percent_decoded - PutObject and DeleteObject calls now answer correctly (empty body, version id in the x-amz-version-id: header) | ||||
* | Work on API | Alex Auvolat | 2020-04-28 | 1 | -68/+69 |
| | |||||
* | Abort multipart upload | Alex Auvolat | 2020-04-26 | 1 | -0/+32 |
| | |||||
* | Implement multipart uploads | Alex Auvolat | 2020-04-26 | 1 | -18/+216 |
| | |||||
* | Update delete code | Alex Auvolat | 2020-04-26 | 1 | -13/+17 |
| | |||||
* | Prepare for multipart uploads | Alex Auvolat | 2020-04-26 | 1 | -7/+15 |
| | |||||
* | Some basic S3 functionnality | Alex Auvolat | 2020-04-24 | 1 | -0/+190 |