From b7547d1cbb8658a82b552d9a92927ec521074f45 Mon Sep 17 00:00:00 2001 From: Yingxin Cheng Date: Thu, 27 Aug 2020 10:51:07 +0800 Subject: [PATCH] crimson/net: cleanup, reset event is synchronously called Signed-off-by: Yingxin Cheng --- src/crimson/net/Protocol.cc | 34 +++++++++++++++------------------- 1 file changed, 15 insertions(+), 19 deletions(-) diff --git a/src/crimson/net/Protocol.cc b/src/crimson/net/Protocol.cc index f89f589adef10..25712314bc0ac 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)); } -- 2.39.5