]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: reorder bucket cleanup on bucket overwrite
authorYehuda Sadeh <yehuda@redhat.com>
Fri, 23 Jan 2015 17:27:38 +0000 (09:27 -0800)
committerYehuda Sadeh <yehuda@redhat.com>
Fri, 23 Jan 2015 19:29:26 +0000 (11:29 -0800)
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 <yehuda@redhat.com>
src/rgw/rgw_rados.cc

index 4aea14b993bf9ecea931d77fa8764875128609c9..cdeb259f625e5481ed2fc38b4e4283f1cef28065 100644 (file)
@@ -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<int, string> 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<int, string>::const_iterator biter;
         for (biter = bucket_objs.begin(); biter != bucket_objs.end(); ++biter) {
           // Do best effort removal