From: Kefu Chai Date: Wed, 18 Sep 2019 03:59:18 +0000 (+0800) Subject: mgr: set hostname in DeviceState::set_metadata() X-Git-Tag: v14.2.5~48^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F30624%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 (cherry picked from commit ff6b3997caa43d3eac0fc462f3be9ec4fa5ae6ed) --- diff --git a/src/mgr/DaemonServer.cc b/src/mgr/DaemonServer.cc index acf4443a6552..9acfdf28e2e7 100644 --- a/src/mgr/DaemonServer.cc +++ b/src/mgr/DaemonServer.cc @@ -431,9 +431,6 @@ bool DaemonServer::handle_open(MMgrOpen *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) { @@ -2705,9 +2702,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 680d4a0cc2cf..706286a2b12f 100644 --- a/src/mgr/DaemonState.h +++ b/src/mgr/DaemonState.h @@ -180,6 +180,10 @@ class DaemonState } } } + p = m.find("hostname"); + if (p != m.end()) { + hostname = p->second; + } } const std::map& _get_config_defaults() {