]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/osd: more interruptions in PeeringEvent. 43449/head
authorRadoslaw Zarzynski <rzarzyns@redhat.com>
Wed, 6 Oct 2021 10:50:19 +0000 (10:50 +0000)
committerRadoslaw Zarzynski <rzarzyns@redhat.com>
Thu, 7 Oct 2021 11:33:18 +0000 (11:33 +0000)
Signed-off-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
src/crimson/osd/osd_operations/peering_event.cc

index 2b8da710e59ad815ec0afc0bf3d45e8647f82425..194876b1d5e1364a10c7ed1dc130d530d7a177a6 100644 (file)
@@ -70,18 +70,20 @@ seastar::future<> PeeringEvent::start()
         return complete_rctx(pg);
       }
       logger().debug("{}: pg present", *this);
-      return with_blocking_future(handle.enter(pp(*pg).await_map)
-      ).then([this, pg] {
-        return with_blocking_future(
+      return with_blocking_future_interruptible<IOInterruptCondition>(
+        handle.enter(pp(*pg).await_map)
+      ).then_interruptible([this, pg] {
+        return with_blocking_future_interruptible<IOInterruptCondition>(
           pg->osdmap_gate.wait_for_map(evt.get_epoch_sent()));
-      }).then([this, pg](auto) {
-        return with_blocking_future(handle.enter(pp(*pg).process));
-      }).then([this, pg] {
+      }).then_interruptible([this, pg](auto) {
+        return with_blocking_future_interruptible<IOInterruptCondition>(
+          handle.enter(pp(*pg).process));
+      }).then_interruptible([this, pg] {
         // TODO: likely we should synchronize also with the pg log-based
         // recovery.
-        return with_blocking_future(
+        return with_blocking_future_interruptible<IOInterruptCondition>(
           handle.enter(BackfillRecovery::bp(*pg).process));
-      }).then([this, pg] {
+      }).then_interruptible([this, pg] {
         pg->do_peering_event(evt, ctx);
         handle.exit();
         return complete_rctx(pg);