From ff6b3997caa43d3eac0fc462f3be9ec4fa5ae6ed Mon Sep 17 00:00:00 2001 From: Kefu Chai Date: Wed, 18 Sep 2019 11:59:18 +0800 Subject: [PATCH] mgr: set hostname in DeviceState::set_metadata() before this change, we don't update daemon's host if the daemon already exists in the `daemon_state` registry when handling MMgrOpen even if the hostname is updated and different from the existing one. and we set daemon's metadata and update daemon's hostname when handling MMgrOpen or MServiceMap. after this change, daemon's hostname is always set whenever `DaemonState::set_metadata()` is called. Fixes: https://tracker.ceph.com/issues/40871 Signed-off-by: Kefu Chai --- src/mgr/DaemonServer.cc | 6 ------ src/mgr/DaemonState.h | 4 ++++ 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/src/mgr/DaemonServer.cc b/src/mgr/DaemonServer.cc index ba6c7f8c4a862..683842745a40a 100644 --- a/src/mgr/DaemonServer.cc +++ b/src/mgr/DaemonServer.cc @@ -417,9 +417,6 @@ bool DaemonServer::handle_open(const ref_t& m) daemon = std::make_shared(daemon_state.types); daemon->key = key; daemon->service_daemon = true; - if (m->daemon_metadata.count("hostname")) { - daemon->hostname = m->daemon_metadata["hostname"]; - } daemon_state.insert(daemon); } if (daemon) { @@ -2745,9 +2742,6 @@ void DaemonServer::got_service_map() auto daemon = std::make_shared(daemon_state.types); daemon->key = key; daemon->set_metadata(q.second.metadata); - if (q.second.metadata.count("hostname")) { - daemon->hostname = q.second.metadata["hostname"]; - } daemon->service_daemon = true; daemon_state.insert(daemon); dout(10) << "added missing " << key << dendl; diff --git a/src/mgr/DaemonState.h b/src/mgr/DaemonState.h index 8c5a8021eaf58..356dcc6b11142 100644 --- a/src/mgr/DaemonState.h +++ b/src/mgr/DaemonState.h @@ -181,6 +181,10 @@ class DaemonState } } } + p = m.find("hostname"); + if (p != m.end()) { + hostname = p->second; + } } const std::map& _get_config_defaults() { -- 2.39.5