From db12f182fc6609e78a9b74a7617c6b29da4fc936 Mon Sep 17 00:00:00 2001 From: Akanksha Akkihal Date: Sat, 25 Jul 2026 21:06:48 -0700 Subject: [PATCH] fix(tools): make LocalProvider prometheus-client stop resilient Avoid pkill matching its own shell under LocalProvider, and treat no matching process as success during bare-metal cleanup. Co-authored-by: Cursor --- .../experiment_utils/services/prometheus_client_service.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/asap-tools/experiments/experiment_utils/services/prometheus_client_service.py b/asap-tools/experiments/experiment_utils/services/prometheus_client_service.py index 6ec0835..0b6a3e6 100644 --- a/asap-tools/experiments/experiment_utils/services/prometheus_client_service.py +++ b/asap-tools/experiments/experiment_utils/services/prometheus_client_service.py @@ -237,10 +237,11 @@ def _stop_containerized(self): def _stop_bare_metal(self): """Kill Prometheus client processes.""" - cmd = "pkill -f main_prometheus_client.py" + # Keep pkill from matching the local shell that invokes it. + cmd = "pkill -f '[m]ain_prometheus_client.py'" if not self.provider.is_remote(): - # If running on localhost, use pkill to stop the process (e.g. from remote_monitor) - utils.run_cmd(cmd, popen=False) + # A missing process is an already-stopped client, not an error. + utils.run_cmd(cmd, popen=False, ignore_errors=True) else: self.provider.execute_command( node_idx=self.node_offset,