From: Radoslaw Zarzynski Date: Wed, 6 Oct 2021 10:50:19 +0000 (+0000) Subject: crimson/osd: more interruptions in PeeringEvent. X-Git-Tag: v17.1.0~713^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=2bf9d7b0d069b17e65d2e146d5a12f4263ffd07d;p=ceph.git crimson/osd: more interruptions in PeeringEvent. Signed-off-by: Radoslaw Zarzynski --- diff --git a/src/crimson/osd/osd_operations/peering_event.cc b/src/crimson/osd/osd_operations/peering_event.cc index 2b8da710e59a..194876b1d5e1 100644 --- a/src/crimson/osd/osd_operations/peering_event.cc +++ b/src/crimson/osd/osd_operations/peering_event.cc @@ -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( + handle.enter(pp(*pg).await_map) + ).then_interruptible([this, pg] { + return with_blocking_future_interruptible( 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( + 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( 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);