diff --git a/oslo_rootwrap/client.py b/oslo_rootwrap/client.py index ee64b74..0dd0742 100644 --- a/oslo_rootwrap/client.py +++ b/oslo_rootwrap/client.py @@ -85,6 +85,15 @@ class Client(object): (stderr,)) LOG.info("Spawned new rootwrap daemon process with pid=%d", process_obj.pid) + + def wait_process(): + return_code = process_obj.wait() + LOG.info("Rootwrap daemon process exit with status: %d", + return_code) + + reap_process = threading.Thread(target=wait_process) + reap_process.daemon = True + reap_process.start() self._manager = ClientManager(socket_path, authkey) self._manager.connect() self._proxy = self._manager.rootwrap() diff --git a/releasenotes/notes/reap-rootwrap-daemon-process-60aebb56d8015484.yaml b/releasenotes/notes/reap-rootwrap-daemon-process-60aebb56d8015484.yaml new file mode 100644 index 0000000..79bd400 --- /dev/null +++ b/releasenotes/notes/reap-rootwrap-daemon-process-60aebb56d8015484.yaml @@ -0,0 +1,11 @@ +--- +fixes: + - | + Reap the rootwrap daemon process after it is timeout and quit. When the + daemon process is timeout, it will kill itself. But the parent doesn't reap + it. Fixed this behaviour by adding a thread to wait the process to be done + once the daemon is started. + + More info please refer the LP #1850241 [1]. + + [1] https://bugs.launchpad.net/oslo.rootwrap/+bug/1850241