]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
rgw/lc: Do not delete DM if its at end of pagination list.
authorkchheda3 <kchheda3@bloomberg.net>
Tue, 14 Oct 2025 20:05:44 +0000 (16:05 -0400)
committerkchheda3 <kchheda3@bloomberg.net>
Tue, 14 Oct 2025 20:05:44 +0000 (16:05 -0400)
fixes tracker https://tracker.ceph.com/issues/73539

Signed-off-by: kchheda3 <kchheda3@bloomberg.net>
src/rgw/rgw_lc.cc

index eaae450c966a14cb02889a010cf91243faf200a2..9d1a776454c2fb710bc2cf0d9ed27fedcb076c5c 100644 (file)
@@ -454,10 +454,18 @@ public:
   }
 
   boost::optional<std::string> next_key_name() {
-    if (obj_iter == list_results.objs.end() ||
-       (obj_iter + 1) == list_results.objs.end()) {
-      /* this should have been called after get_obj() was called, so this should
-       * only happen if is_truncated is false */
+    if (obj_iter == list_results.objs.end()) {
+      return boost::none;
+    }
+    if ((obj_iter + 1) == list_results.objs.end()) {
+      /* At the last object in the current page */
+      if (list_results.is_truncated) {
+        /* More pages exist. Cannot determine if next object has same name
+         * without fetching next page. Return current object name to indicate
+         * uncertainty and prevent incorrect DM deletion at page boundaries. */
+        return obj_iter->key.name;
+      }
+      /* No more pages, definitively no next object */
       return boost::none;
     }