]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/crimson/osd/osd_operations/recovery_subrequest.cc
import quincy beta 17.1.0
[ceph.git] / ceph / src / crimson / osd / osd_operations / recovery_subrequest.cc
index 820c7beabc23a248ac3d67a515d426f705cb145f..df003f7e6b63e5be74064a77e4c70a23784f73b1 100644 (file)
@@ -15,14 +15,17 @@ seastar::future<> RecoverySubRequest::start() {
   logger().debug("{}: start", *this);
 
   IRef opref = this;
-  return with_blocking_future(osd.osdmap_gate.wait_for_map(m->get_min_epoch()))
+  return with_blocking_future(
+      osd.osdmap_gate.wait_for_map(m->get_min_epoch()))
   .then([this] (epoch_t epoch) {
     return with_blocking_future(osd.wait_for_pg(m->get_spg()));
   }).then([this, opref=std::move(opref)] (Ref<PG> pgref) {
-    return seastar::do_with(std::move(pgref), std::move(opref),
-      [this](auto& pgref, auto& opref) {
-      return pgref->get_recovery_backend()->handle_recovery_op(m);
-    });
+    return interruptor::with_interruption([this, opref, pgref] {
+      return seastar::do_with(std::move(pgref), std::move(opref),
+       [this](auto& pgref, auto& opref) {
+       return pgref->get_recovery_backend()->handle_recovery_op(m);
+      });
+    }, [](std::exception_ptr) { return seastar::now(); }, pgref);
   });
 }