]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
mgr/DaemonState: fix get_config_defaults locking
authorMykola Golub <mgolub@suse.com>
Wed, 28 Nov 2018 13:00:55 +0000 (15:00 +0200)
committerMykola Golub <mgolub@suse.com>
Wed, 28 Nov 2018 13:27:52 +0000 (15:27 +0200)
A fixup for 1c2bc53df73d9891330cf0b18f5193167d64df61.

Fixes: http://tracker.ceph.com/issues/36590
Signed-off-by: Mykola Golub <mgolub@suse.com>
src/mgr/DaemonServer.cc

index 4069715e8b7944a429296fab0d587a78742530af..960dc9c61ec89f11544a00fa17a0ea9cdc1d6163 100644 (file)
@@ -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()) {