From: Mykola Golub Date: Wed, 28 Nov 2018 13:00:55 +0000 (+0200) Subject: mgr/DaemonState: fix get_config_defaults locking X-Git-Tag: v14.1.0~753^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=8a65b2a76d6c9f13a9d2ca2d68361686f0306696;p=ceph-ci.git mgr/DaemonState: fix get_config_defaults locking A fixup for 1c2bc53df73d9891330cf0b18f5193167d64df61. Fixes: http://tracker.ceph.com/issues/36590 Signed-off-by: Mykola Golub --- diff --git a/src/mgr/DaemonServer.cc b/src/mgr/DaemonServer.cc index 4069715e8b7..960dc9c61ec 100644 --- a/src/mgr/DaemonServer.cc +++ b/src/mgr/DaemonServer.cc @@ -1630,12 +1630,16 @@ bool DaemonServer::_handle_command( key.first = who.substr(0, dot); key.second = who.substr(dot + 1); DaemonStatePtr daemon = daemon_state.get(key); - std::lock_guard l(daemon->lock); string name; if (!daemon) { ss << "no config state for daemon " << who; - r = -ENOENT; - } else if (cmd_getval(g_ceph_context, cmdctx->cmdmap, "key", name)) { + cmdctx->reply(-ENOENT, ss); + return true; + } + + std::lock_guard l(daemon->lock); + + if (cmd_getval(g_ceph_context, cmdctx->cmdmap, "key", name)) { auto p = daemon->config.find(name); if (p != daemon->config.end() && !p->second.empty()) {