From 7324f9bd6ecca60324e7fc05c4db92d751bb3798 Mon Sep 17 00:00:00 2001 From: Yingxin Cheng Date: Wed, 11 Sep 2019 14:27:53 +0800 Subject: [PATCH] crimson/net: chain non-discardable futures Signed-off-by: Yingxin Cheng --- src/crimson/net/ProtocolV2.cc | 5 +++-- src/crimson/net/SocketMessenger.cc | 4 ++-- src/test/crimson/test_messenger.cc | 5 +++-- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/crimson/net/ProtocolV2.cc b/src/crimson/net/ProtocolV2.cc index 5022303ac29..71203675b47 100644 --- a/src/crimson/net/ProtocolV2.cc +++ b/src/crimson/net/ProtocolV2.cc @@ -1246,8 +1246,9 @@ ProtocolV2::handle_existing_connection(SocketConnectionRef existing_conn) logger().warn("{} server_connect: connection race detected (cs={}, e_cs={}, ss=0)" " and lose to existing {}, ask client to wait", conn, client_cookie, existing_proto->client_cookie, *existing_conn); - existing_conn->keepalive(); - return send_wait(); + return existing_conn->keepalive().then([this] { + return send_wait(); + }); } } else { logger().warn("{} server_connect: found client session with existing {}" diff --git a/src/crimson/net/SocketMessenger.cc b/src/crimson/net/SocketMessenger.cc index edc47378447..9bcad634afd 100644 --- a/src/crimson/net/SocketMessenger.cc +++ b/src/crimson/net/SocketMessenger.cc @@ -169,10 +169,10 @@ seastar::future<> SocketMessenger::do_start(Dispatcher *disp) .then([this] (SocketFRef socket, entity_addr_t peer_addr) { auto shard = locate_shard(peer_addr); - // don't wait before accepting another #warning fixme // we currently do dangerous i/o from a Connection core, different from the Socket core. - container().invoke_on(shard, [sock = std::move(socket), peer_addr, this](auto& msgr) mutable { + return container().invoke_on(shard, + [sock = std::move(socket), peer_addr, this](auto& msgr) mutable { SocketConnectionRef conn = seastar::make_shared( msgr, *msgr.dispatcher, get_myaddr().is_msgr2()); conn->start_accept(std::move(sock), peer_addr); diff --git a/src/test/crimson/test_messenger.cc b/src/test/crimson/test_messenger.cc index d257bea76c7..7438b015d33 100644 --- a/src/test/crimson/test_messenger.cc +++ b/src/test/crimson/test_messenger.cc @@ -425,8 +425,9 @@ static seastar::future<> test_concurrent_dispatch(bool v2) entity_name_t::TYPE_OSD); }).then([](ceph::net::ConnectionXRef conn) { // send two messages - (*conn)->send(make_message()); - (*conn)->send(make_message()); + return (*conn)->send(make_message()).then([conn] { + return (*conn)->send(make_message()); + }); }).then([server] { return server->wait(); }).finally([client] { -- 2.39.5