]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr: use entity_addrvec_t for MgrMap
authorSage Weil <sage@redhat.com>
Tue, 29 May 2018 21:47:07 +0000 (16:47 -0500)
committerSage Weil <sage@redhat.com>
Thu, 31 May 2018 13:10:23 +0000 (08:10 -0500)
This does several entity_addr_t -> entity_addrvec_t conversions across the
mgr code.

(Note that entity_addr_t and entity_addrvec_t already encode in an
interoperable way.)

Signed-off-by: Sage Weil <sage@redhat.com>
src/messages/MMgrBeacon.h
src/mgr/DaemonServer.cc
src/mgr/DaemonServer.h
src/mgr/Mgr.cc
src/mgr/Mgr.h
src/mgr/MgrClient.cc
src/mgr/MgrStandby.cc
src/mon/MgrMap.h
src/mon/MgrMonitor.cc

index 3d9dc9f05e9b5b9fc7e3648c17329cf2ad3f755f..2abca1775f1ed91856433a53482df91a87178de4 100644 (file)
@@ -30,7 +30,7 @@ class MMgrBeacon : public PaxosServiceMessage {
 
 protected:
   uint64_t gid;
-  entity_addr_t server_addr;
+  entity_addrvec_t server_addrs;
   bool available;
   std::string name;
   uuid_d fsid;
@@ -54,17 +54,17 @@ public:
   }
 
   MMgrBeacon(const uuid_d& fsid_, uint64_t gid_, const std::string &name_,
-             entity_addr_t server_addr_, bool available_,
+             entity_addrvec_t server_addrs_, bool available_,
             std::vector<MgrMap::ModuleInfo>&& modules_,
             map<string,string>&& metadata_)
     : PaxosServiceMessage(MSG_MGR_BEACON, 0, HEAD_VERSION, COMPAT_VERSION),
-      gid(gid_), server_addr(server_addr_), available(available_), name(name_),
+      gid(gid_), server_addrs(server_addrs_), available(available_), name(name_),
       fsid(fsid_), modules(std::move(modules_)), metadata(std::move(metadata_))
   {
   }
 
   uint64_t get_gid() const { return gid; }
-  entity_addr_t get_server_addr() const { return server_addr; }
+  entity_addrvec_t get_server_addrs() const { return server_addrs; }
   bool get_available() const { return available; }
   const std::string& get_name() const { return name; }
   const uuid_d& get_fsid() const { return fsid; }
@@ -106,7 +106,7 @@ public:
 
   void print(ostream& out) const override {
     out << get_type_name() << " mgr." << name << "(" << fsid << ","
-       << gid << ", " << server_addr << ", " << available
+       << gid << ", " << server_addrs << ", " << available
        << ")";
   }
 
@@ -114,7 +114,7 @@ public:
     using ceph::encode;
     paxos_encode();
 
-    encode(server_addr, payload, features);
+    encode(server_addrs, payload, features);
     encode(gid, payload);
     encode(available, payload);
     encode(name, payload);
@@ -137,7 +137,7 @@ public:
   void decode_payload() override {
     auto p = payload.cbegin();
     paxos_decode(p);
-    decode(server_addr, p);
+    decode(server_addrs, p);
     decode(gid, p);
     decode(available, p);
     decode(name, p);
index 36341b463b68e9bb6f28a373543520f2ecd9fa5e..bda7c632369de33f1a6ba359f5ac020c4a1e6f53 100644 (file)
@@ -138,9 +138,9 @@ int DaemonServer::init(uint64_t gid, entity_addr_t client_addr)
   return 0;
 }
 
-entity_addr_t DaemonServer::get_myaddr() const
+entity_addrvec_t DaemonServer::get_myaddrs() const
 {
-  return msgr->get_myaddr();
+  return msgr->get_myaddrs();
 }
 
 
index 7972a1d84763bfa07b3c631eecbb4a28ddfd772e..ba9546b41e88c484ccba7f427c8bffe171eef809 100644 (file)
@@ -107,7 +107,7 @@ public:
   int init(uint64_t gid, entity_addr_t client_addr);
   void shutdown();
 
-  entity_addr_t get_myaddr() const;
+  entity_addrvec_t get_myaddrs() const;
 
   DaemonServer(MonClient *monc_,
                Finisher &finisher_,
index 75f1877931aa4c483556e21ac3717ea668fd0b3a..3dfdcec8ca6a9c18b48d1e1e1d3c33c40dce856c 100644 (file)
@@ -202,7 +202,7 @@ void Mgr::init()
     // systemd restart us.
     exit(1);
   }
-  dout(4) << "Initialized server at " << server.get_myaddr() << dendl;
+  dout(4) << "Initialized server at " << server.get_myaddrs() << dendl;
 
   // Preload all daemon metadata (will subsequently keep this
   // up to date by watching maps, so do the initial load before
index e5b558a791b477feca898b1afb1a836cb2eda8fc..2a4c9eec6b4cb513ae4ea40dc0167df1d8d28980 100644 (file)
@@ -78,7 +78,9 @@ public:
   ~Mgr();
 
   bool is_initialized() const {return initialized;}
-  entity_addr_t get_server_addr() const { return server.get_myaddr(); }
+  entity_addrvec_t get_server_addrs() const {
+    return server.get_myaddrs();
+  }
 
   void handle_mgr_digest(MMgrDigest* m);
   void handle_fs_map(MFSMap* m);
index 804c9d639e712cabaecb03b60be539057e93884d..377e208626737105dc6c71a21df5b2b82dfffdfb 100644 (file)
@@ -149,15 +149,13 @@ void MgrClient::reconnect()
     connect_retry_callback = nullptr;
   }
 
-  ldout(cct, 4) << "Starting new session with " << map.get_active_addr()
+  ldout(cct, 4) << "Starting new session with " << map.get_active_addrs()
                << dendl;
-  entity_inst_t inst;
-  inst.addr = map.get_active_addr();
-  inst.name = entity_name_t::MGR(map.get_active_gid());
   last_connect_attempt = ceph_clock_now();
 
   session.reset(new MgrSessionState());
-  session->con = msgr->get_connection(inst);
+  session->con = msgr->connect_to(CEPH_ENTITY_TYPE_MGR,
+                                 map.get_active_addrs());
 
   if (service_daemon) {
     daemon_dirty_status = true;
@@ -208,11 +206,11 @@ bool MgrClient::handle_mgr_map(MMgrMap *m)
   ldout(cct, 4) << "Got map version " << map.epoch << dendl;
   m->put();
 
-  ldout(cct, 4) << "Active mgr is now " << map.get_active_addr() << dendl;
+  ldout(cct, 4) << "Active mgr is now " << map.get_active_addrs() << dendl;
 
   // Reset session?
   if (!session ||
-      session->con->get_peer_addr() != map.get_active_addr()) {
+      session->con->get_peer_addrs() != map.get_active_addrs()) {
     reconnect();
   }
 
index 5e267feab693a7572c4873dbed6952bea2fb1237..d6c24ef97a1ee963f59a51b15a41d1cad65e8791 100644 (file)
@@ -199,7 +199,7 @@ void MgrStandby::send_beacon()
   // as available in the map)
   bool available = active_mgr != nullptr && active_mgr->is_initialized();
 
-  auto addr = available ? active_mgr->get_server_addr() : entity_addr_t();
+  auto addrs = available ? active_mgr->get_server_addrs() : entity_addrvec_t();
   dout(10) << "sending beacon as gid " << monc.get_global_id() << dendl;
 
   map<string,string> metadata;
@@ -209,7 +209,7 @@ void MgrStandby::send_beacon()
   MMgrBeacon *m = new MMgrBeacon(monc.get_fsid(),
                                 monc.get_global_id(),
                                  g_conf->name.get_id(),
-                                 addr,
+                                 addrs,
                                  available,
                                 std::move(module_info),
                                 std::move(metadata));
index 29fccd66485ad9a00d4402d7b34cce6109deb9e1..282aa718eb660dc6ac16c0da29921bef32451629 100644 (file)
@@ -132,7 +132,7 @@ public:
   /// global_id of the ceph-mgr instance selected as a leader
   uint64_t active_gid = 0;
   /// server address reported by the leader once it is active
-  entity_addr_t active_addr;
+  entity_addrvec_t active_addrs;
   /// whether the nominated leader is active (i.e. has initialized its server)
   bool available = false;
   /// the name (foo in mgr.<foo>) of the active daemon
@@ -151,7 +151,7 @@ public:
   std::map<std::string, std::string> services;
 
   epoch_t get_epoch() const { return epoch; }
-  entity_addr_t get_active_addr() const { return active_addr; }
+  entity_addrvec_t get_active_addrs() const { return active_addrs; }
   uint64_t get_active_gid() const { return active_gid; }
   bool get_available() const { return available; }
   const std::string &get_active_name() const { return active_name; }
@@ -235,9 +235,9 @@ public:
 
   void encode(bufferlist& bl, uint64_t features) const
   {
-    ENCODE_START(4, 1, bl);
+    ENCODE_START(5, 1, bl);
     encode(epoch, bl);
-    encode(active_addr, bl, features);
+    encode(active_addrs, bl, features);
     encode(active_gid, bl);
     encode(available, bl);
     encode(active_name, bl);
@@ -259,9 +259,9 @@ public:
 
   void decode(bufferlist::const_iterator& p)
   {
-    DECODE_START(4, p);
+    DECODE_START(5, p);
     decode(epoch, p);
-    decode(active_addr, p);
+    decode(active_addrs, p);
     decode(active_gid, p);
     decode(available, p);
     decode(active_name, p);
@@ -295,7 +295,7 @@ public:
     f->dump_int("epoch", epoch);
     f->dump_int("active_gid", get_active_gid());
     f->dump_string("active_name", get_active_name());
-    f->dump_stream("active_addr") << active_addr;
+    f->dump_object("active_addrs", active_addrs);
     f->dump_bool("available", available);
     f->open_array_section("standbys");
     for (const auto &i : standbys) {
index 793c6282503281d57b3b6309a82b0788fb4ea130..acfea13a8b260d9b6fe49c12640d79fe29e9f709 100644 (file)
@@ -86,7 +86,7 @@ void MgrMonitor::update_from_paxos(bool *need_bootstrap)
     auto p = bl.cbegin();
     map.decode(p);
 
-    dout(4) << "active server: " << map.active_addr
+    dout(4) << "active server: " << map.active_addrs
            << "(" << map.active_gid << ")" << dendl;
 
     ever_had_active_mgr = get_value("ever_had_active_mgr");
@@ -320,10 +320,10 @@ bool MgrMonitor::prepare_beacon(MonOpRequestRef op)
     }
 
     // A beacon from the currently active daemon
-    if (pending_map.active_addr != m->get_server_addr()) {
-      dout(4) << "learned address " << m->get_server_addr()
-             << " (was " << pending_map.active_addr << ")" << dendl;
-      pending_map.active_addr = m->get_server_addr();
+    if (pending_map.active_addrs != m->get_server_addrs()) {
+      dout(4) << "learned address " << m->get_server_addrs()
+             << " (was " << pending_map.active_addrs << ")" << dendl;
+      pending_map.active_addrs = m->get_server_addrs();
       updated = true;
     }
 
@@ -620,7 +620,7 @@ bool MgrMonitor::promote_standby()
     pending_map.active_gid = replacement_gid;
     pending_map.active_name = pending_map.standbys.at(replacement_gid).name;
     pending_map.available = false;
-    pending_map.active_addr = entity_addr_t();
+    pending_map.active_addrs = entity_addrvec_t();
 
     drop_standby(replacement_gid, false);
 
@@ -641,7 +641,7 @@ void MgrMonitor::drop_active()
   pending_map.active_name = "";
   pending_map.active_gid = 0;
   pending_map.available = false;
-  pending_map.active_addr = entity_addr_t();
+  pending_map.active_addrs = entity_addrvec_t();
   pending_map.services.clear();
 
   // So that when new active mgr subscribes to mgrdigest, it will