From d381799865c4c56fd78c6ee17512239ea4496fb6 Mon Sep 17 00:00:00 2001 From: Pedro Escaleira Date: Sat, 23 Jul 2022 23:34:42 +0100 Subject: [PATCH] Bug 2123 fixed - Killing the subprocesses launched in both _local_async_exec and _local_async_exec_pipe methods if cancelled Change-Id: I89d15fa20246407f8e5942960151b1265ec2d298 Signed-off-by: Pedro Escaleira --- n2vc/k8s_helm_base_conn.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/n2vc/k8s_helm_base_conn.py b/n2vc/k8s_helm_base_conn.py index c20b55d..afd9d5e 100644 --- a/n2vc/k8s_helm_base_conn.py +++ b/n2vc/k8s_helm_base_conn.py @@ -1547,6 +1547,9 @@ class K8sHelmBaseConnector(K8sConnector): return output, return_code except asyncio.CancelledError: + # first, kill the process if it is still running + if process.returncode is None: + process.kill() raise except K8sException: raise @@ -1586,7 +1589,7 @@ class K8sHelmBaseConnector(K8sConnector): try: async with self.cmd_lock: read, write = os.pipe() - await asyncio.create_subprocess_exec( + process_1 = await asyncio.create_subprocess_exec( *command1, stdout=write, env=environ ) os.close(write) @@ -1622,6 +1625,10 @@ class K8sHelmBaseConnector(K8sConnector): return output, return_code except asyncio.CancelledError: + # first, kill the processes if they are still running + for process in (process_1, process_2): + if process.returncode is None: + process.kill() raise except K8sException: raise -- 2.17.1