From ace0cd661ba2bc57a07f02a993e56698b2f1e607 Mon Sep 17 00:00:00 2001 From: Venky Shankar Date: Thu, 3 Oct 2019 17:03:43 +0530 Subject: [PATCH] mgr: missing lock release in DaemonServer::handle_report() Fixes: http://tracker.ceph.com/issues/42169 Introduced-by: 5c25a01864 Signed-off-by: Venky Shankar (cherry picked from commit cda3eadbfbd3e3a8a057cc7ed042ba0a6d7fef11) --- src/mgr/DaemonServer.cc | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/mgr/DaemonServer.cc b/src/mgr/DaemonServer.cc index 7595f47c8d806..75ff7c39685f7 100644 --- a/src/mgr/DaemonServer.cc +++ b/src/mgr/DaemonServer.cc @@ -559,7 +559,7 @@ bool DaemonServer::handle_report(MMgrReport *m) { - lock.lock(); + std::unique_lock locker(lock); DaemonStatePtr daemon; // Look up the DaemonState @@ -567,7 +567,7 @@ bool DaemonServer::handle_report(MMgrReport *m) dout(20) << "updating existing DaemonState for " << key << dendl; daemon = daemon_state.get(key); } else { - lock.unlock(); + locker.unlock(); // we don't know the hostname at this stage, reject MMgrReport here. dout(5) << "rejecting report from " << key << ", since we do not have its metadata now." @@ -597,7 +597,7 @@ bool DaemonServer::handle_report(MMgrReport *m) monc->start_mon_command({oss.str()}, {}, &c->outbl, &c->outs, c); } - lock.lock(); + locker.lock(); // kill session auto priv = m->get_connection()->get_priv(); @@ -619,7 +619,6 @@ bool DaemonServer::handle_report(MMgrReport *m) daemon_connections.erase(iter); } - lock.unlock(); return false; } @@ -664,8 +663,6 @@ bool DaemonServer::handle_report(MMgrReport *m) << dendl; } } - - lock.unlock(); } // if there are any schema updates, notify the python modules -- 2.39.5