From 025934423f9f17cc1b7902011e181c4fb197dff1 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Tue, 4 Apr 2017 15:59:05 -0400 Subject: [PATCH] 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 --- src/mgr/Mgr.cc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/mgr/Mgr.cc b/src/mgr/Mgr.cc index 5fa65f7b75759..a3a00807031f5 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; -- 2.39.5