Actions
Bug #38199
openrgw: setacl on versioned object doesn't write correct bi log entries
Status:
Triaged
Priority:
Normal
Assignee:
-
Target version:
-
% Done:
0%
Source:
Tags:
Backport:
Regression:
No
Severity:
3 - minor
Reviewed:
Affected Versions:
ceph-qa-suite:
Pull request ID:
Crash signature (v1):
Crash signature (v2):
Description
It doesn't set the versioned field correctly. Then sync assumes versioned_epoch=0.
Updated by Casey Bodley almost 5 years ago
- Assignee deleted (
Casey Bodley) - Priority changed from High to Normal
It's true that the "versioned" field of the bilog entry from setacl is false:
{ "op_id": "00000000037.30.5", "op_tag": "_bXw-TNSXIu-Y8Ghwd7_lsfsV0SYMFKj", "op": "write", "object": "128m.iso", "instance": "9kazjXXpT2ajS2J4s6KJSdLNEWxWIsZ", "state": "complete", "index_ver": 37, "timestamp": "2019-06-04T18:45:08.202174613Z", "ver": { "pool": 7, "epoch": 11 }, "bilog_flags": 0, "versioned": false, "owner": "", "owner_display_name": "", "zones_trace": [ "52b281b8-891c-4849-b88a-ba2b818f8e8a" ] }
This happens because RGWRados::set_attrs() is preparing/completing its own RGWRados::Bucket::UpdateIndex op, rather than calling through RGWRados::Object::Write::_do_write_meta() which correctly set the versioned field.
The versioned_epoch field is independent of versioned, and should only be set by calls to link_olh/unlink_instance that actually modify the olh. On the sync side, we don't look at the 'versioned' field for sync_object(). It doesn't look like there's any observable consequence of this bug, so lowering priority.
Actions