From: Ramana Raja Date: Wed, 15 Feb 2023 18:41:00 +0000 (-0500) Subject: mgr: take a lock within PyModuleRegistry's mutators and accessor X-Git-Tag: v18.1.0~133^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F50963%2Fhead;p=ceph.git mgr: take a lock within PyModuleRegistry's mutators and accessor ... that modify and access the data member 'clients' respectively. Signed-off-by: Ramana Raja (cherry picked from commit a586dcc57ab35a269f0c271756951d49f422662d) --- diff --git a/src/mgr/ActivePyModules.cc b/src/mgr/ActivePyModules.cc index 02226270beb5..8359a8369638 100644 --- a/src/mgr/ActivePyModules.cc +++ b/src/mgr/ActivePyModules.cc @@ -1500,8 +1500,6 @@ void ActivePyModules::cluster_log(const std::string &channel, clog_type prio, void ActivePyModules::register_client(std::string_view name, std::string addrs) { - std::lock_guard l(lock); - entity_addrvec_t addrv; addrv.parse(addrs.data()); @@ -1511,8 +1509,6 @@ void ActivePyModules::register_client(std::string_view name, std::string addrs) void ActivePyModules::unregister_client(std::string_view name, std::string addrs) { - std::lock_guard l(lock); - entity_addrvec_t addrv; addrv.parse(addrs.data()); diff --git a/src/mgr/PyModuleRegistry.h b/src/mgr/PyModuleRegistry.h index 3231d7c66794..14b8339665a4 100644 --- a/src/mgr/PyModuleRegistry.h +++ b/src/mgr/PyModuleRegistry.h @@ -204,10 +204,12 @@ public: void register_client(std::string_view name, entity_addrvec_t addrs) { + std::lock_guard l(lock); clients.emplace(std::string(name), std::move(addrs)); } void unregister_client(std::string_view name, const entity_addrvec_t& addrs) { + std::lock_guard l(lock); auto itp = clients.equal_range(std::string(name)); for (auto it = itp.first; it != itp.second; ++it) { if (it->second == addrs) { @@ -219,6 +221,7 @@ public: auto get_clients() const { + std::lock_guard l(lock); return clients; }