]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/net: cleanup, reset event is synchronously called 36842/head
authorYingxin Cheng <yingxin.cheng@intel.com>
Thu, 27 Aug 2020 02:51:07 +0000 (10:51 +0800)
committerYingxin Cheng <yingxin.cheng@intel.com>
Thu, 27 Aug 2020 04:55:07 +0000 (12:55 +0800)
Signed-off-by: Yingxin Cheng <yingxin.cheng@intel.com>
src/crimson/net/Protocol.cc

index f89f589adef10aa136bdbf0aeecd7f6e20d073d5..25712314bc0ac35b0df9ef58df654ab4314473b4 100644 (file)
@@ -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<SocketConnection>(conn.shared_from_this()),
-         is_replace);
+
+  if (dispatch_reset) {
+    try {
+        dispatcher->ms_handle_reset(
+            seastar::static_pointer_cast<SocketConnection>(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));
 }