]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: remove bucket API returns NoSuchKey than NoSuchBucket
authorSatoru Takeuchi <satoru.takeuchi@gmail.com>
Mon, 27 Dec 2021 08:03:41 +0000 (08:03 +0000)
committerCasey Bodley <cbodley@redhat.com>
Tue, 18 Jan 2022 18:34:31 +0000 (13:34 -0500)
Remove bucket API returns NoSuchKey but NoSuchBucket is appropriate in this case.

Code path:
RGWRadosStore::get_bucket
-> RGWRadosBucket::get_bucket_info
-> RGWBucketCtl::read_bucket_info
-> RGWBucketCtl::read_bucket_entrypoint_info
-> RGWSI_Bucket_SObj::read_bucket_entrypoint_info
-> RGWSI_MetaBackend_SObj::get_entry
-> rgw_get_system_obj
-> RGWSI_SysObj::Obj::ROp::stat
-> RGWSI_SysObj_Core::stat # return -ENOENT here.

[1]: https://docs.ceph.com/en/pacific/radosgw/adminops/#remove-bucket

Fixes: https://tracker.ceph.com/issues/53731
Signed-off-by: Satoru Takeuchi <satoru.takeuchi@gmail.com>
(cherry picked from commit 375c22aba3ea1d4af6b05a3c83b0aee6ad2a0b6a)

src/rgw/rgw_rest_bucket.cc
src/rgw/services/svc_bucket_sobj.cc

index 8df99378ea70d58a55505d4ecd6a2d4ef5c210d4..8a1cf3f754d5c0a593d4700dc4f39270fd5f1002 100644 (file)
@@ -225,6 +225,9 @@ void RGWOp_Bucket_Remove::execute(optional_yield y)
   op_ret = store->get_bucket(s, s->user.get(), string(), bucket_name, &bucket, y);
   if (op_ret < 0) {
     ldpp_dout(this, 0) << "get_bucket returned ret=" << op_ret << dendl;
+    if (op_ret == -ENOENT) {
+      op_ret = -ERR_NO_SUCH_BUCKET;
+    }
     return;
   }
 
@@ -404,5 +407,4 @@ RGWOp *RGWHandler_Bucket::op_delete()
     return new RGWOp_Object_Remove;
 
   return new RGWOp_Bucket_Remove;
-}
-
+}
\ No newline at end of file
index c5bdd69b0746e1168218b523be091bfa4b138140..99a435215e447770779de8d9ff2c651a0537eea1 100644 (file)
@@ -641,5 +641,4 @@ int RGWSI_Bucket_SObj::read_buckets_stats(RGWSI_Bucket_X_Ctx& ctx,
   }
 
   return m.size();
-}
-
+}
\ No newline at end of file