]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: remove bucket index objects when deleting the bucket 10530/head
authorOrit Wasserman <owasserm@redhat.com>
Mon, 4 Jul 2016 13:01:51 +0000 (15:01 +0200)
committerYehuda Sadeh <yehuda@redhat.com>
Mon, 1 Aug 2016 16:57:33 +0000 (09:57 -0700)
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 396d2d83f3524494c09768a80b5e2bd04377091c..2245a737b1661e114759f36438a25c5fe3688076 100644 (file)
@@ -4393,8 +4393,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;
 
@@ -4435,6 +4435,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;
 }