From e51e1fa45e6a1740b94b56977bc927d302474f5c Mon Sep 17 00:00:00 2001 From: "Adam C. Emerson" Date: Fri, 17 Nov 2017 16:16:38 -0500 Subject: [PATCH] rgw: Handle stale bucket info in RGWDeleteBucketPolicy Signed-off-by: Adam C. Emerson (cherry picked from commit e397b7e6d0c49d625fb2b2363311e6486f2045fe) Fixes: http://tracker.ceph.com/issues/22517 --- src/rgw/rgw_op.cc | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/rgw/rgw_op.cc b/src/rgw/rgw_op.cc index 7c615c3ccce87..89aa1ec30187d 100644 --- a/src/rgw/rgw_op.cc +++ b/src/rgw/rgw_op.cc @@ -7000,11 +7000,11 @@ int RGWDeleteBucketPolicy::verify_permission() void RGWDeleteBucketPolicy::execute() { - auto attrs = s->bucket_attrs; - attrs.erase(RGW_ATTR_IAM_POLICY); - op_ret = rgw_bucket_set_attrs(store, s->bucket_info, attrs, - &s->bucket_info.objv_tracker); - if (op_ret == -ECANCELED) { - op_ret = 0; /* lost a race, but it's ok because policies are immutable */ - } + op_ret = retry_raced_bucket_write(store, s, [this] { + auto attrs = s->bucket_attrs; + attrs.erase(RGW_ATTR_IAM_POLICY); + op_ret = rgw_bucket_set_attrs(store, s->bucket_info, attrs, + &s->bucket_info.objv_tracker); + return op_ret; + }); } -- 2.39.5