From: Yingxin Cheng Date: Thu, 27 Aug 2020 02:51:07 +0000 (+0800) Subject: crimson/net: cleanup, reset event is synchronously called X-Git-Tag: v16.1.0~1320^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F36842%2Fhead;p=ceph.git crimson/net: cleanup, reset event is synchronously called Signed-off-by: Yingxin Cheng --- diff --git a/src/crimson/net/Protocol.cc b/src/crimson/net/Protocol.cc index f89f589adef..25712314bc0 100644 --- a/src/crimson/net/Protocol.cc +++ b/src/crimson/net/Protocol.cc @@ -71,30 +71,26 @@ void Protocol::close(bool dispatch_reset, } set_write_state(write_state_t::drop); auto gate_closed = gate.close(); - auto reset_dispatched = seastar::futurize_invoke([this, dispatch_reset, is_replace] { - if (dispatch_reset) { - dispatcher->ms_handle_reset( - seastar::static_pointer_cast(conn.shared_from_this()), - is_replace); + + if (dispatch_reset) { + try { + dispatcher->ms_handle_reset( + seastar::static_pointer_cast(conn.shared_from_this()), + is_replace); + } catch (...) { + logger().error("{} got unexpected exception in ms_handle_reset() {}", + conn, std::current_exception()); } - return seastar::now(); - }).handle_exception([this] (std::exception_ptr eptr) { - logger().error("{} ms_handle_reset caught exception: {}", conn, eptr); - ceph_abort("unexpected exception from ms_handle_reset()"); - }); + } // asynchronous operations assert(!close_ready.valid()); - close_ready = seastar::when_all_succeed( - std::move(gate_closed).finally([this] { - if (socket) { - return socket->close(); - } + close_ready = std::move(gate_closed).finally([this] { + if (socket) { + return socket->close(); + } else { return seastar::now(); - }), - std::move(reset_dispatched) - ).then_unpack([] { - return seastar::now(); + } }).finally(std::move(cleanup)); }