From a07fd1439feb273e647de1e1a5054409ca5a400d Mon Sep 17 00:00:00 2001 From: Nick Miller Date: Mon, 21 Sep 2020 14:18:33 -0500 Subject: [PATCH 1/3] process: use process kill instead of terminate --- nearuplib/nodelib.py | 2 +- nearuplib/watcher.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/nearuplib/nodelib.py b/nearuplib/nodelib.py index 5fc8cf8..df6e90e 100755 --- a/nearuplib/nodelib.py +++ b/nearuplib/nodelib.py @@ -296,7 +296,7 @@ def stop_native(timeout=DEFAULT_WAIT_TIMEOUT): if proc_name in proc_name_from_pid(pid): logging.info( f"Stopping process {proc_name} with pid {pid}...") - process.terminate() + process.kill() process.wait(timeout=timeout) os.remove(NODE_PID_FILE) else: diff --git a/nearuplib/watcher.py b/nearuplib/watcher.py index e68a7b7..2edbd8a 100644 --- a/nearuplib/watcher.py +++ b/nearuplib/watcher.py @@ -35,7 +35,7 @@ def stop_watcher(timeout=DEFAULT_WAIT_TIMEOUT): process = psutil.Process(pid) logging.info( f'Stopping near watcher {process.name()} with pid {pid}...') - process.terminate() + process.kill() process.wait(timeout=timeout) os.remove(WATCHER_PID_FILE) else: From b8fa79d1cb66724694436b79b1fe04586475b769 Mon Sep 17 00:00:00 2001 From: Nick Miller Date: Mon, 21 Sep 2020 14:32:18 -0500 Subject: [PATCH 2/3] try terminate first, fallback to kill --- nearuplib/nodelib.py | 21 +++++++++++++++------ nearuplib/watcher.py | 14 ++++++++++---- 2 files changed, 25 insertions(+), 10 deletions(-) diff --git a/nearuplib/nodelib.py b/nearuplib/nodelib.py index df6e90e..78c1b4c 100755 --- a/nearuplib/nodelib.py +++ b/nearuplib/nodelib.py @@ -291,13 +291,22 @@ def stop_native(timeout=DEFAULT_WAIT_TIMEOUT): pid, proc_name, _ = line.strip().split("|") pid = int(pid) process = psutil.Process(pid) - logging.info( - f"Near procces is {proc_name} with pid: {pid}...") + logging.info(f"Near procces is {proc_name} with pid: {pid}...") + if proc_name in proc_name_from_pid(pid): - logging.info( - f"Stopping process {proc_name} with pid {pid}...") - process.kill() - process.wait(timeout=timeout) + logging.info(f"Stopping process {proc_name} with pid {pid}...") + try: + process.terminate() + process.wait(timeout=timeout) + except psutil.TimeoutExpired: + logging.warning( + f"Process {proc_name} with pid {pid} is taking a long time to terminate..." + ) + logging.warning( + f"Killing process {pid}" + ) + process.kill() + os.remove(NODE_PID_FILE) else: logging.info("Near deamon is not running...") diff --git a/nearuplib/watcher.py b/nearuplib/watcher.py index 2edbd8a..bef4f5d 100644 --- a/nearuplib/watcher.py +++ b/nearuplib/watcher.py @@ -33,10 +33,16 @@ def stop_watcher(timeout=DEFAULT_WAIT_TIMEOUT): with open(WATCHER_PID_FILE) as pid_file: pid = int(pid_file.read()) process = psutil.Process(pid) - logging.info( - f'Stopping near watcher {process.name()} with pid {pid}...') - process.kill() - process.wait(timeout=timeout) + logging.info(f'Stopping near watcher {process.name()} with pid {pid}...') + + try: + process.terminate() + process.wait(timeout=timeout) + except psutil.TimeoutExpired: + logging.warning('Watcher taking a long time to terminate...') + logging.warning('Killing watcher with pid {pid}') + process.kill() + os.remove(WATCHER_PID_FILE) else: logging.info("Nearup watcher is not running...") From 7bd6862f96b1c094164ec67cd5df1f5bd1f5db14 Mon Sep 17 00:00:00 2001 From: Nick Miller Date: Mon, 21 Sep 2020 14:36:07 -0500 Subject: [PATCH 3/3] lint: line too long --- nearuplib/nodelib.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/nearuplib/nodelib.py b/nearuplib/nodelib.py index 78c1b4c..eee4c15 100755 --- a/nearuplib/nodelib.py +++ b/nearuplib/nodelib.py @@ -300,10 +300,7 @@ def stop_native(timeout=DEFAULT_WAIT_TIMEOUT): process.wait(timeout=timeout) except psutil.TimeoutExpired: logging.warning( - f"Process {proc_name} with pid {pid} is taking a long time to terminate..." - ) - logging.warning( - f"Killing process {pid}" + f"Timeout expired. Killing process {pid}" ) process.kill()