Allow_versions config option in Container-server is deprecated but removing can lead to some version containers failing to version objects
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
OpenStack Object Storage (swift) |
New
|
Undecided
|
Matthew Oliver |
Bug Description
This was already known, and we are very slow to actually remove an option that has been deprecated. However, some patches have risen in some of our (SUSE) deployment tools when people removing this option because it's logging at deprecated.
With this option disabled (false) or missing, the container server wont look for the 'x-versions-
If a container exists with versioning enabled in a cluster pre-kilo (< 2.4.0) and versioning was never "re-enabled" (X-Versions-
This wont effect any newer Swift cluster that started at version > 2.3.0.
Possible fixes:
- Write a tool (link the relinker or and auditwatcher) that will go update the container metadata to use the newer SYSMETA versions key (if it doesn't exist).
- Always return versions/
The first seems overkill and annoyting. But the latter means we need to live with the code in our tree forever or until we mark a swift snapshot data point for upgrades.
Changed in swift: | |
assignee: | nobody → Matthew Oliver (matt-0) |
summary: |
Allow_versions config option in Container-server is deprecated but - removing can lead to lost object data + removing can lead to some version containers failing to version objects |
Here is a simple fix version: http:// paste.openstack .org/show/ 741004/
This just always adds it to the saved_headers. So if it exists it'll always appear in the container_ info['verions' ].
As it currently stands however, disabling versioning wont disable the legacy versioning. This is also really deprecating the option though, as we just always enable it.
Not saying this is the best approach. But is definitely the simplest. And could be back ported so people could remove the deprecated option, as the middleware would find it.