From fb2d72f5e48188a76c0d94d207f9f30545364852 Mon Sep 17 00:00:00 2001 From: Danilo Horta Date: Thu, 5 Dec 2024 16:24:09 +0000 Subject: [PATCH] =?UTF-8?q?Refactor=20shutdown=20and=20assert=5Fpeers=5Fhe?= =?UTF-8?q?althy=20functions=20=F0=9F=8E=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - `daemon.py`: Adjust shutdown order and remove race condition. - `healthy.py`: Loosen peer health check assertions. - `pyproject.toml`: Bump version from 0.16.1 to 0.16.2. Improved shutdown sequence to handle exceptions better. Relaxed peer health check conditions to support more configurations. Version update reflects enhancements. --- h3daemon/h3daemon/daemon.py | 13 ++++++------- h3daemon/h3daemon/healthy.py | 8 ++++---- h3daemon/pyproject.toml | 2 +- 3 files changed, 11 insertions(+), 12 deletions(-) diff --git a/h3daemon/h3daemon/daemon.py b/h3daemon/h3daemon/daemon.py index ef8c5c4..f50ed8d 100644 --- a/h3daemon/h3daemon/daemon.py +++ b/h3daemon/h3daemon/daemon.py @@ -21,7 +21,6 @@ def shutdown(x: psutil.Process, force: bool): with suppress(psutil.NoSuchProcess): if force: x.kill() - x.wait() else: x.terminate() try: @@ -71,10 +70,10 @@ def spawn(cls, hmmfile: HMMFile, cport: int = 0, wport: int = 0): assert_peers_healthy(master, worker) except Exception as exception: debug_exception(exception) - if master: - shutdown(master.process, force=True) if worker: shutdown(worker.process, force=True) + if master: + shutdown(master.process, force=True) raise exception return cls(master, worker, None) @@ -100,11 +99,11 @@ def possess(cls, pidfile: PIDLockFile): return cls(master, worker, process) def shutdown(self, force=False): - if self._master is not None: - shutdown(self._master.process, force) - if self._worker is not None: - shutdown(self._worker.process, force) + shutdown(self._worker.process, True) + + if self._master is not None: + shutdown(self._master.process, True) if self._process is not None: shutdown(self._process, force) diff --git a/h3daemon/h3daemon/healthy.py b/h3daemon/h3daemon/healthy.py index 86741c6..6cc7ad0 100644 --- a/h3daemon/h3daemon/healthy.py +++ b/h3daemon/h3daemon/healthy.py @@ -11,12 +11,12 @@ def assert_peers_healthy(master: Master, worker: Worker): worker_lport = worker.local_established_ports() worker_rport = worker.remote_established_ports() - assert len(master_lport) == 1 + assert len(master_lport) >= 1 assert len(worker_rport) == 1 - assert master_lport[0] == worker_rport[0] - assert len(master_rport) == 1 + assert worker_rport[0] in master_lport + assert len(master_rport) >= 1 assert len(worker_lport) == 1 - assert master_rport[0] == worker_lport[0] + assert worker_lport[0] in master_rport assert len(master_listen) == 2 master_ports = set(master_listen) assert len(master_ports) == 2 diff --git a/h3daemon/pyproject.toml b/h3daemon/pyproject.toml index 00778e8..553f3bc 100644 --- a/h3daemon/pyproject.toml +++ b/h3daemon/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "h3daemon" -version = "0.16.1" +version = "0.16.2" description = "HMMER server" authors = ["Danilo Horta "] license = "MIT"