From: Yingxin Cheng Date: Tue, 16 Jul 2019 08:29:30 +0000 (+0800) Subject: crimson/net: use target_addr to store the address to reconnect X-Git-Tag: v15.1.0~2161^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=55bfa18fd132657d3a0b4480ca00e4af1fe16b99;p=ceph.git 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 --- diff --git a/src/crimson/net/ProtocolV1.cc b/src/crimson/net/ProtocolV1.cc index 0c28ff479492..586b8bd1839f 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 87e0c1cbda01..7bc9a2565a82 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;