Merge pull request #13991 from Liuchang0812/wip-rgw-optimization

rgw: avoid listing user buckets for rgw_delete_user

Reviewed-by: Orit Wasserman <owasserm@redhat.com>
Reviewed-by: Casey Bodley <cbodley@redhat.com>
This commit is contained in:
Casey Bodley 2017-03-24 11:10:28 -04:00 committed by GitHub
commit c899d7ef8c

View File

@ -404,34 +404,7 @@ int rgw_remove_swift_name_index(RGWRados *store, string& swift_name)
* themselves alone, as well as any ACLs embedded in object xattrs.
*/
int rgw_delete_user(RGWRados *store, RGWUserInfo& info, RGWObjVersionTracker& objv_tracker) {
string marker;
vector<rgw_bucket> buckets_vec;
bool done;
bool is_truncated;
int ret;
CephContext *cct = store->ctx();
size_t max_buckets = cct->_conf->rgw_list_buckets_max_chunk;
do {
RGWUserBuckets user_buckets;
ret = rgw_read_user_buckets(store, info.user_id, user_buckets, marker,
string(), max_buckets, false, &is_truncated);
if (ret < 0)
return ret;
map<string, RGWBucketEnt>& buckets = user_buckets.get_buckets();
for (map<string, RGWBucketEnt>::iterator i = buckets.begin();
i != buckets.end();
++i) {
RGWBucketEnt& bucket = i->second;
buckets_vec.push_back(bucket.bucket);
marker = i->first;
}
done = (buckets.size() < max_buckets);
} while (!done);
map<string, RGWAccessKey>::iterator kiter = info.access_keys.begin();
for (; kiter != info.access_keys.end(); ++kiter) {