From: Kefu Chai Date: Wed, 18 Sep 2019 03:59:18 +0000 (+0800) Subject: mgr: set hostname in DeviceState::set_metadata() X-Git-Tag: v15.1.0~1474^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F30448%2Fhead;p=ceph.git 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 --- diff --git a/src/mgr/DaemonServer.cc b/src/mgr/DaemonServer.cc index ba6c7f8c4a8..683842745a4 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 8c5a8021eaf..356dcc6b111 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() {