From: Yehuda Sadeh Date: Fri, 23 Jan 2015 17:27:38 +0000 (-0800) Subject: rgw: reorder bucket cleanup on bucket overwrite X-Git-Tag: v0.93~156^2~15 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=51e3ffaece1eedf987728e947e0f79e3cc1b31fa;p=ceph.git rgw: reorder bucket cleanup on bucket overwrite First read the new instance info, then remove it, not the other way around. Artifact of bucket sharding merge with object versioning. Signed-off-by: Yehuda Sadeh --- diff --git a/src/rgw/rgw_rados.cc b/src/rgw/rgw_rados.cc index 4aea14b993b..cdeb259f625 100644 --- a/src/rgw/rgw_rados.cc +++ b/src/rgw/rgw_rados.cc @@ -2479,13 +2479,6 @@ int RGWRados::create_bucket(RGWUserInfo& owner, rgw_bucket& bucket, /* only remove it if it's a different bucket instance */ if (info.bucket.bucket_id != bucket.bucket_id) { - /* remove bucket meta instance */ - string entry; - get_bucket_instance_entry(bucket, entry); - r = rgw_bucket_instance_remove_entry(this, entry, &instance_ver); - if (r < 0) - return r; - /* remove bucket index */ librados::IoCtx index_ctx; // context for new bucket map bucket_objs; @@ -2493,6 +2486,13 @@ int RGWRados::create_bucket(RGWUserInfo& owner, rgw_bucket& bucket, if (r < 0) return r; + /* remove bucket meta instance */ + string entry; + get_bucket_instance_entry(bucket, entry); + r = rgw_bucket_instance_remove_entry(this, entry, &instance_ver); + if (r < 0) + return r; + map::const_iterator biter; for (biter = bucket_objs.begin(); biter != bucket_objs.end(); ++biter) { // Do best effort removal