]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: remove bucket index objects when deleting the bucket 10525/head
authorOrit Wasserman <owasserm@redhat.com>
Mon, 4 Jul 2016 13:01:51 +0000 (15:01 +0200)
committerAbhishek Varshney <abhishek.varshney@flipkart.com>
Mon, 1 Aug 2016 08:18:50 +0000 (13:48 +0530)
Fixes: http://tracker.ceph.com/issues/16412
Signed-off-by: Orit Wasserman <owasserm@redhat.com>
(cherry picked from commit 3ae276390641ad5fc4fef0c03971db95948880b4)

src/rgw/rgw_rados.cc

index d10d37def25aef82710f6c04063965ee696b3bd1..fa68072d8c3cea1c6d078ae1baf76d446668bf37 100644 (file)
@@ -7063,8 +7063,8 @@ bool RGWRados::is_syncing_bucket_meta(rgw_bucket& bucket)
 int RGWRados::delete_bucket(rgw_bucket& bucket, RGWObjVersionTracker& objv_tracker)
 {
   librados::IoCtx index_ctx;
-  string oid;
-  int r = open_bucket_index(bucket, index_ctx, oid);
+  map<int, string> bucket_objs;
+  int r = open_bucket_index(bucket, index_ctx, bucket_objs);
   if (r < 0)
     return r;
 
@@ -7105,6 +7105,11 @@ int RGWRados::delete_bucket(rgw_bucket& bucket, RGWObjVersionTracker& objv_track
     if (r < 0) {
       return r;
     }
+    /* remove bucket index objects*/
+    map<int, string>::const_iterator biter;
+    for (biter = bucket_objs.begin(); biter != bucket_objs.end(); ++biter) {
+      index_ctx.remove(biter->second);
+    }
   }
   return 0;
 }