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 <sage@redhat.com>
This commit is contained in:
Sage Weil 2017-04-04 15:59:05 -04:00
parent 6d5e0132d9
commit 025934423f

View File

@ -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<std::string, std::string> loaded;