Versioned Writes drops SLO bytes on overwrite
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
OpenStack Object Storage (swift) |
Fix Released
|
Undecided
|
Nguyen Quoc Viet |
Bug Description
When you upload a SLO, the large object bytes appears in the container listing instead of the manifest content-length. When a SLO manifest is overwritten in a container with object versioning enabled I expect the SLO bytes to be in the archive listing and propagate to the versioned container on restore.
Start with an SLO in a versioned container:
vagrant@saio:~$ swift stat test
Read ACL:
Write ACL:
Sync To:
Sync Key:
X-
X-Openstack-
X-Versions-
vagrant@saio:~$ swift list test --json
[
{
"bytes": 10485760,
"content_type": "application/
"hash": "651f14b53ec230
"last_
"name": "big.test",
"slo_etag": "\"71e938d37c1d
}
]
When you overwrite the archived copy looses the swift_bytes information:
vagrant@saio:~$ curl -H 'x-auth-token: AUTH_tk43fa244b
vagrant@saio:~$ swift list test+versions --json
[
{
"bytes": 2694,
"content_type": "application/
"hash": "651f14b53ec230
"last_
"name": "008big.
"slo_etag": "\"71e938d37c1d
}
]
Even though the object still has the correct Content-Length the large object bytes won't come back on restore:
vagrant@saio:~$ swift stat test+versions 008big.
Content Type: application/
Content Length: 10485760
Last Modified: Thu, 15 Aug 2019 17:14:00 GMT
Meta Mtime: 1563465570.324261
X-Static-
X-Openstack-
vagrant@saio:~$ swift delete test big.test
big.test
vagrant@saio:~$ swift list test --json
[
{
"bytes": 2694,
"content_type": "application/
"hash": "651f14b53ec230
"last_
"name": "big.test",
"slo_etag": "\"71e938d37c1d
}
]
Changed in swift: | |
assignee: | nobody → Nguyen Quoc Viet (axblueblader) |
status: | New → In Progress |
Changed in swift: | |
status: | In Progress → Confirmed |
status: | Confirmed → In Progress |
Fix proposed to branch: master /review. opendev. org/681639
Review: https:/