Fast multipart uploads #63
Labels
No labels
P0
P1
P2
P3
good first issue
Infrastructure
blocked
bug
config
discussion
documentation
duplicate
enhancement
go
help wanted
internal
invalid
kludge
observability
perfomance
question
refactoring
wontfix
No project
No assignees
3 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: TrueCloudLab/frostfs-s3-gw#63
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
S3 Gateway implements
CompleteMultipartUpload
this way (5c62010331
):This is quite slow and inefficient, because in the end user awaits up to x2 upload time (for the parts and for the new object at complete multipart upload). Also it requires to delete parts, which may cause some issues in case of failures.
As the solution I propose to define special combine object. This object should be marked in the tree service and store list of object IDs. It is similar to link object. Unlike it, combine object stores IDs of any object and not just small objects. This should be safe enough, because combine objects are stored according to placement policy.
🟢 Fast complete multipart upload.
🟢 No changes in native protocol: S3 uses object names to identify objects instead of payload+header hash in native protocol, so it can't be a part of native protocol.
🟢 Removes some delete operations from multipart upload case.
🔴 Slower GET operations, especially for small objects which can be upload as multipart (see S3 Browser implementation, which uses 8MiB parts).
🔴 Requires support in HTTP Gateway to process combine objects.
Consider some extra optimizations like storing small combine objects fully in tree service.
We can create small PoC and check how badly it will affect GET operations (for small and large objects).
/cc @TrueCloudLab/storage-services-committers
When we have life-cycle features, it should become possible to do background recombination afterwards.
done in #157