Project

General

Profile

Actions

Bug #51572

open

retry_raced_bucket_write() callers not handling attrs correctly

Added by Casey Bodley almost 3 years ago.

Status:
New
Priority:
Normal
Assignee:
-
Target version:
-
% Done:

0%

Source:
Tags:
Backport:
pacific
Regression:
No
Severity:
3 - minor
Reviewed:
Affected Versions:
ceph-qa-suite:
Pull request ID:
Crash signature (v1):
Crash signature (v2):

Description

some ops like RGWPutCORS, RGWDeleteCORS, etc. handle writes to the bucket instance like this:

  op_ret = retry_raced_bucket_write(this, s->bucket.get(), [this] {
      rgw::sal::Attrs attrs(s->bucket_attrs);
      attrs[RGW_ATTR_CORS] = cors_bl;
      return s->bucket->set_instance_attrs(this, attrs, s->yield);
    });

if retry_raced_bucket_write() detects a race and reloads the bucket info, 's->bucket_attrs' doesn't get updated with the new bucket attributes

other ops handle this correctly by using s->bucket->get_attrs() instead:

  op_ret = retry_raced_bucket_write(this, s->bucket.get(), [this, y] {
    rgw::sal::Attrs attrs = s->bucket->get_attrs();
    attrs[RGW_ATTR_TAGS] = tags_bl;
    return s->bucket->set_instance_attrs(this, attrs, y);
  });

No data to display

Actions

Also available in: Atom PDF