]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
crimson/.../replicated_request: hold pg ref until complete() resolves
authorSamuel Just <sjust@redhat.com>
Fri, 10 Jan 2025 03:44:45 +0000 (03:44 +0000)
committerSamuel Just <sjust@redhat.com>
Fri, 10 Jan 2025 03:45:35 +0000 (03:45 +0000)
02b70a62a4 moved the call to complete() into the finally block,
so we need to hold a reference to the pg until the complete()
resolves.

Signed-off-by: Samuel Just <sjust@redhat.com>
src/crimson/osd/osd_operations/replicated_request.cc

index 257d6779269dc25e0d30d96e833a318a8b63a175..0630e70b1ddefc2cf1a03442c3c17afaa90128fb 100644 (file)
@@ -107,10 +107,11 @@ seastar::future<> RepRequest::with_pg(
     return with_pg_interruptible(pg);
   }, [](std::exception_ptr) {
     return seastar::now();
-  }, pg, pg->get_osdmap_epoch()).finally([this, ref=std::move(ref)]() mutable {
+  }, pg, pg->get_osdmap_epoch()
+  ).finally([this, pg, ref=std::move(ref)]() mutable {
     logger().debug("{}: exit", *this);
     return handle.complete(
-    ).finally([ref=std::move(ref)] {});
+    ).finally([ref=std::move(ref), pg=std::move(pg)] {});
   });
 }