]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
crimson/net: unify the usage of entity_type_t and entity_name_t
authorYingxin Cheng <yingxin.cheng@intel.com>
Thu, 11 Jul 2019 09:47:20 +0000 (17:47 +0800)
committerYingxin Cheng <yingxin.cheng@intel.com>
Tue, 16 Jul 2019 09:06:38 +0000 (17:06 +0800)
* use standard entity_type_t(uint8_t) in favor of peer_type_t(int);
* use standard ceph_entity_type_name() to print where possible;
* use peer_name to encapsulate peer_type and peer_id in Connection.h;
* clean related interfaces in Messenger and Connection;
* print peer_name in Connection logging prefix;

Signed-off-by: Yingxin Cheng <yingxin.cheng@intel.com>
src/crimson/mon/MonClient.cc
src/crimson/net/Connection.h
src/crimson/net/Dispatcher.h
src/crimson/net/Fwd.h
src/crimson/net/Messenger.h
src/crimson/net/ProtocolV1.cc
src/crimson/net/ProtocolV2.cc
src/crimson/net/ProtocolV2.h
src/crimson/net/SocketConnection.cc
src/crimson/net/SocketConnection.h
src/test/crimson/test_alien_echo.cc

index 9660e639e934c0cae72d6a997428428dc0771f84..2c236af718bd210ed2397acf483bfa949b2f5c90 100644 (file)
@@ -83,7 +83,7 @@ public:
   // v1 and v2
   seastar::future<> close();
   bool is_my_peer(const entity_addr_t& addr) const;
-  AuthAuthorizer* get_authorizer(peer_type_t peer) const;
+  AuthAuthorizer* get_authorizer(entity_type_t peer) const;
   KeyStore& get_keys();
   seastar::future<> renew_tickets();
   seastar::future<> renew_rotating_keyring();
@@ -176,7 +176,7 @@ seastar::future<> Connection::renew_rotating_keyring()
   });
 }
 
-AuthAuthorizer* Connection::get_authorizer(peer_type_t peer) const
+AuthAuthorizer* Connection::get_authorizer(entity_type_t peer) const
 {
   if (auth) {
     return auth->build_authorizer(peer);
index a8a7f43a1951f287d6bfd15e5b8c9979e3311b27..e4408c19bc10daf50b5c0e921ffde2a8c7c4d7bb 100644 (file)
@@ -25,14 +25,17 @@ namespace ceph::net {
 using seq_num_t = uint64_t;
 
 class Connection : public seastar::enable_shared_from_this<Connection> {
+  entity_name_t peer_name = {0, -1};
+
  protected:
   entity_addr_t peer_addr;
-  peer_type_t peer_type = -1;
-  int64_t peer_id = -1;
   using clock_t = seastar::lowres_system_clock;
   clock_t::time_point last_keepalive;
   clock_t::time_point last_keepalive_ack;
 
+  void set_peer_type(entity_type_t peer_type) { peer_name._type = peer_type; }
+  void set_peer_id(int64_t peer_id) { peer_name._num = peer_id; }
+
  public:
   uint64_t peer_global_id = 0;
 
@@ -42,15 +45,15 @@ class Connection : public seastar::enable_shared_from_this<Connection> {
 
   virtual Messenger* get_messenger() const = 0;
   const entity_addr_t& get_peer_addr() const { return peer_addr; }
-  virtual int get_peer_type() const = 0;
-
-  bool peer_is_mon() const { return get_peer_type() == CEPH_ENTITY_TYPE_MON; }
-  bool peer_is_mgr() const { return get_peer_type() == CEPH_ENTITY_TYPE_MGR; }
-  bool peer_is_mds() const { return get_peer_type() == CEPH_ENTITY_TYPE_MDS; }
-  bool peer_is_osd() const { return get_peer_type() == CEPH_ENTITY_TYPE_OSD; }
-  bool peer_is_client() const {
-    return get_peer_type() == CEPH_ENTITY_TYPE_CLIENT;
-  }
+  const entity_name_t& get_peer_name() const { return peer_name; }
+  entity_type_t get_peer_type() const { return peer_name.type(); }
+  int64_t get_peer_id() const { return peer_name.num(); }
+
+  bool peer_is_mon() const { return peer_name.is_mon(); }
+  bool peer_is_mgr() const { return peer_name.is_mgr(); }
+  bool peer_is_mds() const { return peer_name.is_mds(); }
+  bool peer_is_osd() const { return peer_name.is_osd(); }
+  bool peer_is_client() const { return peer_name.is_client(); }
 
   /// true if the handshake has completed and no errors have been encountered
   virtual seastar::future<bool> is_connected() = 0;
index 8d6d9b71f9279eab308aeb63803df8d6ce40d409..134a91ba525ae37468643a92a646f9b3a727654e 100644 (file)
@@ -48,7 +48,7 @@ class Dispatcher {
   }
 
   virtual seastar::future<msgr_tag_t, bufferlist>
-  ms_verify_authorizer(peer_type_t,
+  ms_verify_authorizer(entity_type_t,
                       auth_proto_t,
                       bufferlist&) {
     return seastar::make_ready_future<msgr_tag_t, bufferlist>(0, bufferlist{});
index c6b4b5c2e82e3397c88389c1fc7e47c72ddd5862..80f3c1a4b95b14ec342f7b4ead364bff95825f7e 100644 (file)
@@ -20,7 +20,6 @@
 #include "msg/msg_types.h"
 #include "msg/Message.h"
 
-using peer_type_t = int;
 using auth_proto_t = int;
 
 class AuthConnectionMeta;
index c0e2602707ad759dc2e03f497527e7c054d55cc8..6d857463da86cf7c7ef3f70cd8ecc7351120590e 100644 (file)
@@ -47,7 +47,7 @@ public:
   {}
   virtual ~Messenger() {}
 
-  int get_mytype() const { return my_name.type(); }
+  entity_type_t get_mytype() const { return my_name.type(); }
   const entity_name_t& get_myname() const { return my_name; }
   const entity_addrvec_t& get_myaddrs() const { return my_addrs; }
   entity_addr_t get_myaddr() const { return my_addrs.front(); }
index 093cb1c3288d90105c5a4a0c97765b8c29351fb8..48b628684af363460869f9144fce8b5dddc17aa9 100644 (file)
@@ -258,7 +258,7 @@ ProtocolV1::handle_connect_reply(msgr_tag_t tag)
 ceph::bufferlist ProtocolV1::get_auth_payload()
 {
   // only non-mons connectings to mons use MAuth messages
-  if (conn.peer_type == CEPH_ENTITY_TYPE_MON &&
+  if (conn.peer_is_mon() &&
      messenger.get_mytype() != CEPH_ENTITY_TYPE_MON) {
     return {};
   } else {
@@ -284,7 +284,7 @@ ProtocolV1::repeat_connect()
   h.connect.host_type = messenger.get_myname().type();
   h.connect.global_seq = h.global_seq;
   h.connect.connect_seq = h.connect_seq;
-  h.connect.protocol_version = get_proto_version(conn.peer_type, true);
+  h.connect.protocol_version = get_proto_version(conn.get_peer_type(), true);
   // this is fyi, actually, server decides!
   h.connect.flags = conn.policy.lossy ? CEPH_MSG_CONNECT_LOSSY : 0;
 
@@ -327,7 +327,7 @@ void ProtocolV1::start_connect(const entity_addr_t& _peer_addr,
 
   ceph_assert(!socket);
   conn.peer_addr = _peer_addr;
-  conn.peer_type = _peer_type;
+  conn.set_peer_type(_peer_type);
   messenger.register_conn(
     seastar::static_pointer_cast<SocketConnection>(conn.shared_from_this()));
   seastar::with_gate(pending_dispatch, [this] {
@@ -537,7 +537,7 @@ seastar::future<stop_t> ProtocolV1::repeat_handle_connect()
     .then([this](bufferlist bl) {
       auto p = bl.cbegin();
       ::decode(h.connect, p);
-      conn.peer_type = h.connect.host_type;
+      conn.set_peer_type(h.connect.host_type);
       return socket->read(h.connect.authorizer_len);
     }).then([this] (bufferlist authorizer) {
       memset(&h.reply, 0, sizeof(h.reply));
index e5bee37a5eba2f7341e3f0d1664d71718a392fff..8b26a3b88913d5e2c1215a303d3f4f1512f332e4 100644 (file)
@@ -108,7 +108,7 @@ void ProtocolV2::start_connect(const entity_addr_t& _peer_addr,
   ceph_assert(!socket);
   conn.peer_addr = _peer_addr;
   conn.target_addr = _peer_addr;
-  conn.peer_type = _peer_type;
+  conn.set_peer_type(_peer_type);
   conn.policy = messenger.get_policy(_peer_type);
   messenger.register_conn(
     seastar::static_pointer_cast<SocketConnection>(conn.shared_from_this()));
@@ -476,7 +476,8 @@ seastar::future<entity_type_t, entity_addr_t> ProtocolV2::banner_exchange()
       // 6. process peer HelloFrame
       auto hello = HelloFrame::Decode(rx_segments_data.back());
       logger().trace("{} received hello: peer_type={} peer_addr_for_me={}",
-                     conn, (int)hello.entity_type(), hello.peer_addr());
+                     conn, ceph_entity_type_name(hello.entity_type()),
+                     hello.peer_addr());
       return seastar::make_ready_future<entity_type_t, entity_addr_t>(
           hello.entity_type(), hello.peer_addr());
     });
@@ -662,8 +663,7 @@ seastar::future<bool> ProtocolV2::client_connect()
 
           // TODO: change peer_addr to entity_addrvec_t
           ceph_assert(conn.peer_addr == server_ident.addrs().front());
-          peer_name = entity_name_t(conn.get_peer_type(), server_ident.gid());
-          conn.peer_id = server_ident.gid();
+          conn.set_peer_id(server_ident.gid());
           conn.set_features(server_ident.supported_features() &
                             conn.policy.features_supported);
           peer_global_seq = server_ident.global_seq();
@@ -787,9 +787,10 @@ void ProtocolV2::execute_connecting()
           return banner_exchange();
         }).then([this] (entity_type_t _peer_type,
                         entity_addr_t _peer_addr) {
-          if (conn.peer_type != _peer_type) {
+          if (conn.get_peer_type() != _peer_type) {
             logger().debug("{} connection peer type does not match what peer advertises {} != {}",
-                           conn, conn.peer_type, (int)_peer_type);
+                           conn, ceph_entity_type_name(conn.get_peer_type()),
+                           ceph_entity_type_name(_peer_type));
             dispatch_reset();
             abort_in_close();
           }
@@ -999,8 +1000,7 @@ seastar::future<bool> ProtocolV2::server_connect()
     logger().trace("{} got paddr={}, conn.peer_addr={}", conn, paddr, conn.peer_addr);
     conn.target_addr = conn.peer_addr;
 
-    peer_name = entity_name_t(conn.get_peer_type(), client_ident.gid());
-    conn.peer_id = client_ident.gid();
+    conn.set_peer_id(client_ident.gid());
     client_cookie = client_ident.cookie();
 
     uint64_t feat_missing =
@@ -1199,12 +1199,12 @@ void ProtocolV2::execute_accepting()
       return banner_exchange()
         .then([this] (entity_type_t _peer_type,
                       entity_addr_t _peer_addr) {
-          ceph_assert(conn.get_peer_type() == -1);
-          conn.peer_type = _peer_type;
+          ceph_assert(conn.get_peer_type() == 0);
+          conn.set_peer_type(_peer_type);
 
           conn.policy = messenger.get_policy(_peer_type);
           logger().trace("{} accept of host type {}, lossy={} server={} standby={} resetcheck={}",
-                         conn, (int)_peer_type,
+                         conn, ceph_entity_type_name(_peer_type),
                          conn.policy.lossy, conn.policy.server,
                          conn.policy.standby, conn.policy.resetcheck);
           return server_auth();
@@ -1387,7 +1387,7 @@ ceph::bufferlist ProtocolV2::do_sweep_messages(
     auto message = MessageFrame::Encode(header2,
         msg->get_payload(), msg->get_middle(), msg->get_data());
     logger().debug("{} --> [{} {}] #{} === {} ({}) // {}",
-                  messenger, peer_name, conn.get_peer_addr(),
+                  messenger, conn.get_peer_name(), conn.get_peer_addr(),
                   msg->get_seq(), *msg, msg->get_type(), conn);
     bl.append(message.get_buffer(session_stream_handlers));
   });
@@ -1418,7 +1418,7 @@ seastar::future<> ProtocolV2::read_message(utime_t throttle_stamp)
     logger().trace("{} got {} + {} + {} byte message,"
                    " envelope type={} src={} off={} seq={}",
                    conn, msg_frame.front_len(), msg_frame.middle_len(),
-                   msg_frame.data_len(), current_header.type, peer_name,
+                   msg_frame.data_len(), current_header.type, conn.get_peer_name(),
                    current_header.data_off, current_header.seq);
 
     ceph_msg_header header{current_header.seq,
@@ -1430,7 +1430,7 @@ seastar::future<> ProtocolV2::read_message(utime_t throttle_stamp)
                            msg_frame.middle_len(),
                            msg_frame.data_len(),
                            current_header.data_off,
-                           peer_name,
+                           conn.get_peer_name(),
                            current_header.compat_version,
                            current_header.reserved,
                            0};
index b8681c2199ded11fec6eb70594a952f02d27c4f5..52ffaf5c86ccc17dc924cce3a30bf53b020db2ab 100644 (file)
@@ -62,7 +62,6 @@ class ProtocolV2 final : public Protocol {
 
   void trigger_state(state_t state, write_state_t write_state, bool reentrant);
 
-  entity_name_t peer_name;
   uint64_t connection_features = 0;
   uint64_t peer_required_features = 0;
 
index 9e83f1b16a443dd6d3babb20ba2be096fd88688b..19b27dfb79179b06d77ebb3af92bd08eaae17483 100644 (file)
@@ -121,12 +121,12 @@ seastar::shard_id SocketConnection::shard_id() const {
 void SocketConnection::print(ostream& out) const {
     messenger.print(out);
     if (side == side_t::none) {
-      out << " >> " << peer_addr;
+      out << " >> " << get_peer_name() << " " << peer_addr;
     } else if (side == side_t::acceptor) {
-      out << " >> " << peer_addr
+      out << " >> " << get_peer_name() << " " << peer_addr
           << "@" << socket_port;
     } else { // side == side_t::connector
       out << "@" << socket_port
-          << " >> " << peer_addr;
+          << " >> " << get_peer_name() << " " << peer_addr;
     }
 }
index 482cbd723d1fe18cb43905cb7678a8eaa62d4605..38c303a98c441c0d71dd47a117db00d3edd4e51d 100644 (file)
@@ -74,10 +74,6 @@ class SocketConnection : public Connection {
 
   Messenger* get_messenger() const override;
 
-  int get_peer_type() const override {
-    return peer_type;
-  }
-
   seastar::future<bool> is_connected() override;
 
   seastar::future<> send(MessageRef msg) override;
index d784c843e40292673bde3ef556f0372e4e71be90..a35c617380aba158ad2579565a03feb3b9a4e9f2 100644 (file)
@@ -52,7 +52,7 @@ struct Server {
       });
     }
     seastar::future<ceph::net::msgr_tag_t, bufferlist>
-    ms_verify_authorizer(peer_type_t peer_type,
+    ms_verify_authorizer(entity_type_t peer_type,
                          auth_proto_t protocol,
                          bufferlist& auth) override {
       return seastar::make_ready_future<ceph::net::msgr_tag_t, bufferlist>(