From 7f787704cdcd55df18d204c5251cdd6a3cedd604 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Tue, 29 May 2018 16:47:07 -0500 Subject: [PATCH] mgr: use entity_addrvec_t for MgrMap 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 --- src/messages/MMgrBeacon.h | 14 +++++++------- src/mgr/DaemonServer.cc | 4 ++-- src/mgr/DaemonServer.h | 2 +- src/mgr/Mgr.cc | 2 +- src/mgr/Mgr.h | 4 +++- src/mgr/MgrClient.cc | 12 +++++------- src/mgr/MgrStandby.cc | 4 ++-- src/mon/MgrMap.h | 14 +++++++------- src/mon/MgrMonitor.cc | 14 +++++++------- 9 files changed, 35 insertions(+), 35 deletions(-) diff --git a/src/messages/MMgrBeacon.h b/src/messages/MMgrBeacon.h index 3d9dc9f05e9..2abca1775f1 100644 --- a/src/messages/MMgrBeacon.h +++ b/src/messages/MMgrBeacon.h @@ -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&& modules_, map&& 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); diff --git a/src/mgr/DaemonServer.cc b/src/mgr/DaemonServer.cc index 36341b463b6..bda7c632369 100644 --- a/src/mgr/DaemonServer.cc +++ b/src/mgr/DaemonServer.cc @@ -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(); } diff --git a/src/mgr/DaemonServer.h b/src/mgr/DaemonServer.h index 7972a1d8476..ba9546b41e8 100644 --- a/src/mgr/DaemonServer.h +++ b/src/mgr/DaemonServer.h @@ -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_, diff --git a/src/mgr/Mgr.cc b/src/mgr/Mgr.cc index 75f1877931a..3dfdcec8ca6 100644 --- a/src/mgr/Mgr.cc +++ b/src/mgr/Mgr.cc @@ -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 diff --git a/src/mgr/Mgr.h b/src/mgr/Mgr.h index e5b558a791b..2a4c9eec6b4 100644 --- a/src/mgr/Mgr.h +++ b/src/mgr/Mgr.h @@ -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); diff --git a/src/mgr/MgrClient.cc b/src/mgr/MgrClient.cc index 804c9d639e7..377e2086267 100644 --- a/src/mgr/MgrClient.cc +++ b/src/mgr/MgrClient.cc @@ -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(); } diff --git a/src/mgr/MgrStandby.cc b/src/mgr/MgrStandby.cc index 5e267feab69..d6c24ef97a1 100644 --- a/src/mgr/MgrStandby.cc +++ b/src/mgr/MgrStandby.cc @@ -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 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)); diff --git a/src/mon/MgrMap.h b/src/mon/MgrMap.h index 29fccd66485..282aa718eb6 100644 --- a/src/mon/MgrMap.h +++ b/src/mon/MgrMap.h @@ -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.) of the active daemon @@ -151,7 +151,7 @@ public: std::map 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) { diff --git a/src/mon/MgrMonitor.cc b/src/mon/MgrMonitor.cc index 793c6282503..acfea13a8b2 100644 --- a/src/mon/MgrMonitor.cc +++ b/src/mon/MgrMonitor.cc @@ -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 -- 2.39.5