MonCommandCompletion *command_c = new MonCommandCompletion(self->py_modules,
completion, tag, PyThreadState_Get());
+
+ PyThreadState *tstate = PyEval_SaveThread();
+
if (std::string(type) == "mon") {
// Wait for the latest OSDMap after each command we send to
delete command_c;
string msg("invalid osd_id: ");
msg.append("\"").append(name).append("\"");
+ PyEval_RestoreThread(tstate);
PyErr_SetString(PyExc_ValueError, msg.c_str());
return nullptr;
}
if (r != 0) {
string msg("failed to send command to mds: ");
msg.append(cpp_strerror(r));
+ PyEval_RestoreThread(tstate);
PyErr_SetString(PyExc_RuntimeError, msg.c_str());
return nullptr;
}
delete command_c;
string msg("invalid pgid: ");
msg.append("\"").append(name).append("\"");
+ PyEval_RestoreThread(tstate);
PyErr_SetString(PyExc_ValueError, msg.c_str());
return nullptr;
}
&command_c->outbl,
&command_c->outs,
command_c);
+ PyEval_RestoreThread(tstate);
return nullptr;
} else {
delete command_c;
string msg("unknown service type: ");
msg.append(type);
+ PyEval_RestoreThread(tstate);
PyErr_SetString(PyExc_ValueError, msg.c_str());
return nullptr;
}
+ PyEval_RestoreThread(tstate);
Py_RETURN_NONE;
}