From: Casey Bodley Date: Tue, 26 Jul 2022 16:29:08 +0000 (-0400) Subject: rgw: RGWBulkDelete calls forward_to_master before remove_bucket() X-Git-Tag: v19.0.0~122^2~19 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=59708637fac2dc5b036b81fb3df7b0eaebdac7c3;p=ceph-ci.git rgw: RGWBulkDelete calls forward_to_master before remove_bucket() fix the path of the forwarded request the same way that RGWBulkUpload does, and call forward_request_to_master() before remove_bucket() Signed-off-by: Casey Bodley --- diff --git a/src/rgw/rgw_op.cc b/src/rgw/rgw_op.cc index 8d2f564b8e3..32416457213 100644 --- a/src/rgw/rgw_op.cc +++ b/src/rgw/rgw_op.cc @@ -7322,7 +7322,7 @@ bool RGWBulkDelete::Deleter::delete_single(const acct_path_t& path, optional_yie goto auth_fail; } - if (!path.obj_key.empty()) { + if (!path.obj_key.empty()) { // object deletion ACLOwner bucket_owner; bucket_owner.set_id(bucket->get_info().owner); @@ -7338,8 +7338,20 @@ bool RGWBulkDelete::Deleter::delete_single(const acct_path_t& path, optional_yie if (ret < 0) { goto delop_fail; } - } else { - ret = bucket->remove_bucket(dpp, false, true, &s->info, s->yield); + } else { // bucket deletion + if (!driver->is_meta_master()) { + // apply bucket deletion on the master zone first + req_info req = s->info; + forward_req_info(dpp, s->cct, req, path.bucket_name); + + bufferlist data; + ret = driver->forward_request_to_master(dpp, s->user.get(), nullptr, + data, nullptr, req, y); + if (ret < 0) { + goto delop_fail; + } + } + ret = bucket->remove_bucket(dpp, false, false, nullptr, s->yield); if (ret < 0) { goto delop_fail; }