From: Aleksei Gutikov Date: Tue, 14 Nov 2017 12:45:39 +0000 (+0300) Subject: rgw: fix radosgw-admin bucket rm with --purge-objects and --bypass-gc X-Git-Tag: v13.0.1~183^2 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=db42e385d26ee4d1ef94b900102b705d6a794029;p=ceph-ci.git rgw: fix radosgw-admin bucket rm with --purge-objects and --bypass-gc Call RGWRados::delete_bucket() from rgw_remove_bucket_bypass_gc() instead of partial copy of code of RGWRados::delete_bucket(). Fix updating user stats after radosgw-admin bucket rm --purge-objects and --bypass-gc Due to rgw_user(const std::string& s) was called incorrect version of rgw_bucket_sync_user_stats(). Fixes: http://tracker.ceph.com/issues/22122 Fixes: http://tracker.ceph.com/issues/19959 Signed-off-by: Aleksei Gutikov --- diff --git a/src/rgw/rgw_bucket.cc b/src/rgw/rgw_bucket.cc index a481aa5b4bf..1c4ceda7033 100644 --- a/src/rgw/rgw_bucket.cc +++ b/src/rgw/rgw_bucket.cc @@ -567,7 +567,7 @@ int rgw_remove_bucket(RGWRados *store, rgw_bucket& bucket, bool delete_children) return ret; } - ret = rgw_bucket_sync_user_stats(store, bucket.tenant, info); + ret = rgw_bucket_sync_user_stats(store, info.owner, info); if ( ret < 0) { dout(1) << "WARNING: failed sync user stats before bucket delete. ret=" << ret << dendl; } @@ -728,29 +728,19 @@ int rgw_remove_bucket_bypass_gc(RGWRados *store, rgw_bucket& bucket, return ret; } - ret = rgw_bucket_sync_user_stats(store, bucket.tenant, info); + ret = rgw_bucket_sync_user_stats(store, info.owner, info); if (ret < 0) { dout(1) << "WARNING: failed sync user stats before bucket delete. ret=" << ret << dendl; } RGWObjVersionTracker objv_tracker; - ret = rgw_bucket_delete_bucket_obj(store, bucket.tenant, bucket.name, objv_tracker); + ret = store->delete_bucket(info, objv_tracker); if (ret < 0) { - lderr(store->ctx()) << "ERROR: could not remove bucket " << bucket.name << "with ret as " << ret << dendl; + lderr(store->ctx()) << "ERROR: could not remove bucket " << bucket.name << dendl; return ret; } - if (!store->is_syncing_bucket_meta(bucket)) { - RGWObjVersionTracker objv_tracker; - string entry = bucket.get_key(); - ret = rgw_bucket_instance_remove_entry(store, entry, &objv_tracker); - if (ret < 0) { - lderr(store->ctx()) << "ERROR: could not remove bucket instance entry" << bucket.name << "with ret as " << ret << dendl; - return ret; - } - } - ret = rgw_unlink_bucket(store, info.owner, bucket.tenant, bucket.name, false); if (ret < 0) { lderr(store->ctx()) << "ERROR: unable to remove user bucket information" << dendl;