From: Sage Weil Date: Tue, 4 Apr 2017 19:59:05 +0000 (-0400) Subject: mgr/Mgr: drop lock while fetching config-keys X-Git-Tag: v12.0.2~166^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=025934423f9f17cc1b7902011e181c4fb197dff1;p=ceph.git mgr/Mgr: drop lock while fetching config-keys This avoids a deadlock if some other message arrives before the command reply and needs to take the mgr lock in dispatch. Signed-off-by: Sage Weil --- diff --git a/src/mgr/Mgr.cc b/src/mgr/Mgr.cc index 5fa65f7b7575..a3a00807031f 100644 --- a/src/mgr/Mgr.cc +++ b/src/mgr/Mgr.cc @@ -193,6 +193,7 @@ void Mgr::init() } dout(4) << "waiting for config-keys..." << dendl; + // Preload config keys (`get` for plugins is to be a fast local // operation, we we don't have to synchronize these later because // all sets will come via mgr) @@ -305,8 +306,9 @@ void Mgr::load_config() dout(10) << "listing keys" << dendl; JSONCommand cmd; cmd.run(monc, "{\"prefix\": \"config-key list\"}"); - + lock.Unlock(); cmd.wait(); + lock.Lock(); assert(cmd.r == 0); std::map loaded;