s3api does not clean up orphan segment parts when MPU is overwritten
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
OpenStack Object Storage (swift) |
Confirmed
|
Undecided
|
Unassigned |
Bug Description
Steps to repro:
1. Use S3 API to create a multipart upload
2. Use Swift API to find the backing data in the +segments container
3. Use S3 API to overwrite the multipart upload
4. Use Swift API to look in the +segments container -- the backing data from step 2 is still there, eating space!
Expected behavior:
The overwritten data should be removed, similar to what would have happened if we issued a DELETE before the overwrite.
This gets hairier when you think about the general case, where the object being overwritten may be an SLO (so it'd be "reasonable" to think that the segments should have their own lifecycle independent of the manifest), but they *definitely* should get cleaned up in the multipart-upload case.
summary: |
- s3api doesn't clean up multipart upload parts when MU is overwritten + s3api does not clean up orphan segment parts when MPU is overwritten |
Changed in swift: | |
status: | New → Confirmed |
Thanks, Tim.
We also need to handle cases to clean up parts, when the multipart upload stops mid-way(or fails due to some error) or remains pending (no complete called) for some time interval. Something like slo-parts-expirer is needed to scan +segments bucket and delete parts which do not have a valid manifest file.