older PUT than tombstone creates .data file
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
OpenStack Object Storage (swift) |
Fix Released
|
Undecided
|
Kota Tsuyuzaki |
Bug Description
PUT object with X-TImetamp which is older than tombstone (for now, it's deleted) will creates .data file in the device even though it will be cleaned up in hash_cleanup_
Swift already has a validation process to prevent such an unexpected transfer due to X-Timestamp comparison in normal case but if the newer one is tombstone current Swift cannot prevent. For example we have 2 requests whose X-Timestamps are old_timestamp < new_timestamp.
In normal case:
PUT object with {X-Timestamp: old_timestamp} and new_timstamp.data exists, it fails as 409 conflict.
The case this bug report described:
PUT object with {X-Timestamp: old_timestamp} and new_timstamp.ts exists, it succeed as 201. <- This is mismatched with normal case semantics and the old data handled whether or not it should be there *after* landed in the device. This is a problem.
Fix proposed to branch: master /review. openstack. org/281636
Review: https:/