]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/BaseMgrModule: use without_gil() helper
authorKefu Chai <kchai@redhat.com>
Thu, 18 Feb 2021 04:27:06 +0000 (12:27 +0800)
committerKefu Chai <kchai@redhat.com>
Mon, 22 Feb 2021 11:49:08 +0000 (19:49 +0800)
Signed-off-by: Kefu Chai <kchai@redhat.com>
src/mgr/BaseMgrModule.cc

index f1ebb94ae93c07d9f9142ae6bc3edb086dc985a7..c1d42aa9b46d7c41749d080dcf1d930cde3bd8b9 100644 (file)
@@ -357,12 +357,10 @@ ceph_set_health_checks(BaseMgrModule *self, PyObject *args)
   out_checks.dump(&jf);
   jf.flush(*_dout);
   *_dout << dendl;
-
-  PyThreadState *tstate = PyEval_SaveThread();
-  self->py_modules->set_health_checks(self->this_module->get_name(),
-                                      std::move(out_checks));
-  PyEval_RestoreThread(tstate);
-
+  without_gil([&] {
+    self->py_modules->set_health_checks(self->this_module->get_name(),
+                                       std::move(out_checks));
+  });
   Py_RETURN_NONE;
 }
 
@@ -492,10 +490,9 @@ ceph_set_module_option(BaseMgrModule *self, PyObject *args)
   if (value) {
     val = value;
   }
-  PyThreadState *tstate = PyEval_SaveThread();
-  self->py_modules->set_config(module, key, val);
-  PyEval_RestoreThread(tstate);
-
+  without_gil([&] {
+    self->py_modules->set_config(module, key, val);
+  });
   Py_RETURN_NONE;
 }
 
@@ -532,10 +529,9 @@ ceph_store_set(BaseMgrModule *self, PyObject *args)
   if (value) {
     val = value;
   }
-  PyThreadState *tstate = PyEval_SaveThread();
-  self->py_modules->set_store(self->this_module->get_name(), key, val);
-  PyEval_RestoreThread(tstate);
-
+  without_gil([&] {
+    self->py_modules->set_store(self->this_module->get_name(), key, val);
+  });
   Py_RETURN_NONE;
 }
 
@@ -587,11 +583,9 @@ ceph_cluster_log(BaseMgrModule *self, PyObject *args)
   if (!PyArg_ParseTuple(args, "sis:ceph_cluster_log", &channel, &prio, &message)) {
     return nullptr;
   }
-
-  PyThreadState *tstate = PyEval_SaveThread();
-  self->py_modules->cluster_log(channel, (clog_type)prio, message);
-  PyEval_RestoreThread(tstate);
-
+  without_gil([&] {
+    self->py_modules->cluster_log(channel, (clog_type)prio, message);
+  });
   Py_RETURN_NONE;
 }
 
@@ -678,14 +672,12 @@ ceph_set_uri(BaseMgrModule *self, PyObject *args)
         &svc_str)) {
     return nullptr;
   }
-
   // We call down into PyModules even though we have a MgrPyModule
   // reference here, because MgrPyModule's fields are protected
   // by PyModules' lock.
-  PyThreadState *tstate = PyEval_SaveThread();
-  self->py_modules->set_uri(self->this_module->get_name(), svc_str);
-  PyEval_RestoreThread(tstate);
-
+  without_gil([&] {
+    self->py_modules->set_uri(self->this_module->get_name(), svc_str);
+  });
   Py_RETURN_NONE;
 }
 
@@ -698,11 +690,9 @@ ceph_set_wear_level(BaseMgrModule *self, PyObject *args)
                        &devid, &wear_level)) {
     return nullptr;
   }
-
-  PyThreadState *tstate = PyEval_SaveThread();
-  self->py_modules->set_device_wear_level(devid, wear_level);
-  PyEval_RestoreThread(tstate);
-
+  without_gil([&] {
+    self->py_modules->set_device_wear_level(devid, wear_level);
+  });
   Py_RETURN_NONE;
 }
 
@@ -727,11 +717,9 @@ ceph_update_progress_event(BaseMgrModule *self, PyObject *args)
                        &evid, &desc, &progress, &add_to_ceph_s)) {
     return nullptr;
   }
-
-  PyThreadState *tstate = PyEval_SaveThread();
-  self->py_modules->update_progress_event(evid, desc, progress, add_to_ceph_s);
-  PyEval_RestoreThread(tstate);
-
+  without_gil([&] {
+    self->py_modules->update_progress_event(evid, desc, progress, add_to_ceph_s);
+  });
   Py_RETURN_NONE;
 }
 
@@ -743,21 +731,18 @@ ceph_complete_progress_event(BaseMgrModule *self, PyObject *args)
                        &evid)) {
     return nullptr;
   }
-
-  PyThreadState *tstate = PyEval_SaveThread();
-  self->py_modules->complete_progress_event(evid);
-  PyEval_RestoreThread(tstate);
-
+  without_gil([&] {
+    self->py_modules->complete_progress_event(evid);
+  });
   Py_RETURN_NONE;
 }
 
 static PyObject*
 ceph_clear_all_progress_events(BaseMgrModule *self, PyObject *args)
 {
-  PyThreadState *tstate = PyEval_SaveThread();
-  self->py_modules->clear_all_progress_events();
-  PyEval_RestoreThread(tstate);
-
+  without_gil([&] {
+    self->py_modules->clear_all_progress_events();
+  });
   Py_RETURN_NONE;
 }
 
@@ -1357,9 +1342,9 @@ ceph_is_authorized(BaseMgrModule *self, PyObject *args)
     arguments[arg_key] = arg_value;
   }
 
-  PyThreadState *tstate = PyEval_SaveThread();
-  bool r = self->this_module->is_authorized(arguments);
-  PyEval_RestoreThread(tstate);
+  bool r = without_gil([&] {
+    return self->this_module->is_authorized(arguments);
+  });
 
   if (r) {
     Py_RETURN_TRUE;
@@ -1374,9 +1359,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);
+  without_gil([&] {
+    self->py_modules->register_client(self->this_module->get_name(), addrs);
+  });
   Py_RETURN_NONE;
 }
 
@@ -1387,9 +1372,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);
+  without_gil([&] {
+    self->py_modules->unregister_client(self->this_module->get_name(), addrs);
+  });
   Py_RETURN_NONE;
 }