COPY broke multipart files uploaded under dumpling
A user reported that some files in their bucket, uploaded ~2 years ago under dumpling, have stopped working after they were moved around recently.
All of the files under "home/fvault/Lastest/" were moved to "home/fvault/Lastest/20g/", and now they all don't work anymore.
A HEAD on the files returns the correct metadata and response code 200, but a GET operation and all other operations [that access the objects] I've tested (including rename/move) returns 404.
I have run:
- bucket check --fix
- bucket check --fix --check-head-obj-locator
But it did not fix the issue.
rgw-admin object stat output on one of the broken objects does show the older manifest->objs structure, and the first item in that list contains the old filename, isn't in RADOS anymore.
rgw-admin object stat output, plus
rados stat output for each of the parts.
I've censored the following information in the attachments.
- Bucket name
- Actual filename
Required fix parts:
- codebase needs to correctly handle the move
- need a fixup tool to detect and fix all broken manifests for this, may be VERY hard depending what the rename was.
#1 Updated by Robin Johnson over 2 years ago
- Subject changed from multipart files uploaded under dumpling broken in hammer, after moving folders to COPY broke multipart files uploaded under dumpling
- Release set to infernalis
- Release set to jewel
Per IRC discussion with Yehuda, the COPY operation has broken the manifest.Things to fix:
- Fix COPY to not break the manifest
- Add Fix tool to fix broken manifests
- (maybe) Fix GET to handle broken manifests transparently
Also it would seem that this does affect Jewel environments with the old Dumpling data as well.