]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: fix dereference of empty std::optional in RGWDeleteMultiObj::execute()
authorCory Snyder <csnyder@iland.com>
Mon, 12 Dec 2022 08:04:20 +0000 (03:04 -0500)
committerCory Snyder <csnyder@1111systems.com>
Wed, 5 Apr 2023 18:52:58 +0000 (14:52 -0400)
Fixes a crash that occurs when RGW is executed without an async context.

Fixes: https://tracker.ceph.com/issues/58243
Signed-off-by: Cory Snyder <csnyder@iland.com>
(cherry picked from commit 91ff9591b095e8e73e4dff5c4a3fe3c66c0de9b6)

src/rgw/rgw_op.cc

index 727dc1b257b7d78114d24bb7b106bc4c50a06cb7..01f2f52a7e35aa43a328e6a366fe37b00de27dcf 100644 (file)
@@ -7024,9 +7024,11 @@ void RGWDeleteMultiObj::execute(optional_yield y)
       handle_individual_object(obj_key, y, &*formatter_flush_cond);
     }
   }
-  wait_flush(y, &*formatter_flush_cond, [this, n=multi_delete->objects.size()] {
-    return n == ops_log_entries.size();
-  });
+  if (formatter_flush_cond) {
+    wait_flush(y, &*formatter_flush_cond, [this, n=multi_delete->objects.size()] {
+      return n == ops_log_entries.size();
+    });
+  }
 
   /*  set the return code to zero, errors at this point will be
   dumped to the response */