From 8a65b2a76d6c9f13a9d2ca2d68361686f0306696 Mon Sep 17 00:00:00 2001 From: Mykola Golub Date: Wed, 28 Nov 2018 15:00:55 +0200 Subject: [PATCH] mgr/DaemonState: fix get_config_defaults locking A fixup for 1c2bc53df73d9891330cf0b18f5193167d64df61. Fixes: http://tracker.ceph.com/issues/36590 Signed-off-by: Mykola Golub --- src/mgr/DaemonServer.cc | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/mgr/DaemonServer.cc b/src/mgr/DaemonServer.cc index 4069715e8b79..960dc9c61ec8 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()) { -- 2.47.3