]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr: take a lock within PyModuleRegistry's mutators and accessor 52883/head
authorRamana Raja <rraja@redhat.com>
Wed, 15 Feb 2023 18:41:00 +0000 (13:41 -0500)
committerRamana Raja <rraja@redhat.com>
Tue, 8 Aug 2023 18:20:54 +0000 (14:20 -0400)
... that modify and access the data member 'clients' respectively.

Signed-off-by: Ramana Raja <rraja@redhat.com>
(cherry picked from commit a586dcc57ab35a269f0c271756951d49f422662d)

src/mgr/ActivePyModules.cc
src/mgr/PyModuleRegistry.h

index 6a8525b37b28ef4743b9d3cf78c4fd0b09028ed5..f774ebb83adaf57e84a400eb6042589abd62cf06 100644 (file)
@@ -1492,8 +1492,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());
 
@@ -1503,8 +1501,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());
 
index 17ed8917c78d9ff9375da11c90bd5f52da738da2..9a286c3e404f3beb5391304576c888c287aa7396 100644 (file)
@@ -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;
   }