]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: fix issue with concurrent versioned deletes leaving behind olh entries 59357/head
authorCory Snyder <csnyder@1111systems.com>
Fri, 12 Jan 2024 14:51:14 +0000 (14:51 +0000)
committerKonstantin Shalygin <k0ste@k0ste.ru>
Tue, 20 Aug 2024 12:56:41 +0000 (19:56 +0700)
Fixes a scenario where BI OLH entries were left behind after racing
delete requests for the same versioned object instance.

Fixes: https://tracker.ceph.com/issues/64014
Signed-off-by: Cory Snyder <csnyder@1111systems.com>
(cherry picked from commit 66ac828f97c1b368e41c51be4e5699f3e92d47f9)

src/cls/rgw/cls_rgw.cc

index eb7b1e0d7dafd645c086111c542ec7719d5eec25..bffe857e46eff62eed590b5bed86f9c09809fbaf 100644 (file)
@@ -1786,11 +1786,10 @@ static int rgw_bucket_unlink_instance(cls_method_context_t hctx, bufferlist *in,
   BIOLHEntry olh(hctx, dest_key);
 
   int ret = obj.init();
-  if (ret == -ENOENT) {
-    return 0; /* already removed */
-  }
   if (ret < 0) {
-    CLS_LOG(0, "ERROR: obj.init() returned ret=%d", ret);
+    if (ret != -ENOENT) {
+      CLS_LOG(0, "ERROR: obj.init() returned ret=%d", ret);
+    }
     return ret;
   }