From 55bfa18fd132657d3a0b4480ca00e4af1fe16b99 Mon Sep 17 00:00:00 2001 From: Yingxin Cheng Date: Tue, 16 Jul 2019 16:29:30 +0800 Subject: [PATCH] crimson/net: use target_addr to store the address to reconnect With lossless policy, we will use target_addr to reconnect to peer, which would be more useful when we switch to entity_addrvec_t. Signed-off-by: Yingxin Cheng --- src/crimson/net/ProtocolV1.cc | 14 +++++++------- src/crimson/net/ProtocolV2.cc | 8 +++----- 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/src/crimson/net/ProtocolV1.cc b/src/crimson/net/ProtocolV1.cc index 0c28ff47949..586b8bd1839 100644 --- a/src/crimson/net/ProtocolV1.cc +++ b/src/crimson/net/ProtocolV1.cc @@ -329,6 +329,7 @@ void ProtocolV1::start_connect(const entity_addr_t& _peer_addr, conn.set_ephemeral_port(0, SocketConnection::side_t::none); ceph_assert(!socket); conn.peer_addr = _peer_addr; + conn.target_addr = _peer_addr; conn.set_peer_type(_peer_type); conn.policy = messenger.get_policy(_peer_type); messenger.register_conn( @@ -609,19 +610,19 @@ void ProtocolV1::start_accept(SocketFRef&& sock, set_write_state(write_state_t::delay); ceph_assert(!socket); - conn.peer_addr.u = _peer_addr.u; - conn.peer_addr.set_port(0); + // until we know better + conn.target_addr = _peer_addr; conn.set_ephemeral_port(_peer_addr.get_port(), SocketConnection::side_t::acceptor); socket = std::move(sock); messenger.accept_conn( seastar::static_pointer_cast(conn.shared_from_this())); - seastar::with_gate(pending_dispatch, [this, _peer_addr] { + seastar::with_gate(pending_dispatch, [this] { // encode/send server's handshake header bufferlist bl; bl.append(buffer::create_static(banner_size, banner)); ::encode(messenger.get_myaddr(), bl, 0); - ::encode(_peer_addr, bl, 0); + ::encode(conn.target_addr, bl, 0); return socket->write_flush(std::move(bl)) .then([this] { // read client's handshake header and connect request @@ -632,9 +633,8 @@ void ProtocolV1::start_accept(SocketFRef&& sock, entity_addr_t addr; ::decode(addr, p); ceph_assert(p.end()); - conn.peer_addr.set_type(addr.get_type()); - conn.peer_addr.set_port(addr.get_port()); - conn.peer_addr.set_nonce(addr.get_nonce()); + conn.peer_addr = addr; + conn.target_addr = conn.peer_addr; return seastar::repeat([this] { return repeat_handle_connect(); }); diff --git a/src/crimson/net/ProtocolV2.cc b/src/crimson/net/ProtocolV2.cc index 87e0c1cbda0..7bc9a2565a8 100644 --- a/src/crimson/net/ProtocolV2.cc +++ b/src/crimson/net/ProtocolV2.cc @@ -147,11 +147,12 @@ void ProtocolV2::start_accept(SocketFRef&& sock, { ceph_assert(state == state_t::NONE); ceph_assert(!socket); + // until we know better conn.target_addr = _peer_addr; conn.set_ephemeral_port(_peer_addr.get_port(), SocketConnection::side_t::acceptor); socket = std::move(sock); - logger().info("{} ProtocolV2::start_accept(): peer_addr={}", conn, _peer_addr); + logger().info("{} ProtocolV2::start_accept(): target_addr={}", conn, _peer_addr); messenger.accept_conn( seastar::static_pointer_cast(conn.shared_from_this())); execute_accepting(); @@ -1073,10 +1074,7 @@ seastar::future ProtocolV2::server_connect() } // TODO: change peer_addr to entity_addrvec_t entity_addr_t paddr = client_ident.addrs().front(); - conn.peer_addr = conn.target_addr; - conn.peer_addr.set_type(paddr.get_type()); - conn.peer_addr.set_port(paddr.get_port()); - conn.peer_addr.set_nonce(paddr.get_nonce()); + conn.peer_addr = paddr; logger().debug("{} UPDATE: peer_addr={}", conn, conn.peer_addr); conn.target_addr = conn.peer_addr; -- 2.39.5