]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
mgr/ActivePyModules: drop GIL to register/unregister clients
authorSage Weil <sage@redhat.com>
Fri, 21 Feb 2020 14:58:55 +0000 (08:58 -0600)
committerSage Weil <sage@redhat.com>
Fri, 21 Feb 2020 14:58:55 +0000 (08:58 -0600)
We need to drop the GIL since we are taking ActivePyModules::lock.

Fixes: df507cde8d71063d5873a42f668156e4c32e86f9
Fixes: https://tracker.ceph.com/issues/44241
Signed-off-by: Sage Weil <sage@redhat.com>
src/mgr/BaseMgrModule.cc

index ebdec8f0503656b45ee4bca5d559c0a1dd22876d..f194dfe4f025811c746bca5121c5a379a705324e 100644 (file)
@@ -1069,9 +1069,9 @@ ceph_register_client(BaseMgrModule *self, PyObject *args)
   if (!PyArg_ParseTuple(args, "s:ceph_register_client", &addrs)) {
     return nullptr;
   }
-
+  PyThreadState *tstate = PyEval_SaveThread();
   self->py_modules->register_client(self->this_module->get_name(), addrs);
-
+  PyEval_RestoreThread(tstate);
   Py_RETURN_NONE;
 }
 
@@ -1082,9 +1082,9 @@ ceph_unregister_client(BaseMgrModule *self, PyObject *args)
   if (!PyArg_ParseTuple(args, "s:ceph_unregister_client", &addrs)) {
     return nullptr;
   }
-
+  PyThreadState *tstate = PyEval_SaveThread();
   self->py_modules->unregister_client(self->this_module->get_name(), addrs);
-
+  PyEval_RestoreThread(tstate);
   Py_RETURN_NONE;
 }