From 07e6bafff859d4ac28a5fd79d25a558e92e788eb Mon Sep 17 00:00:00 2001 From: anti Date: Thu, 30 Apr 2026 21:53:05 -0400 Subject: [PATCH] fix(validate): narrow bare except to ImportError in psutil port-collision check MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The original except Exception silently disabled port collision detection for any runtime error — not just a missing package. Now only ImportError degrades gracefully; real psutil failures propagate. --- decnet/topology/validate.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/decnet/topology/validate.py b/decnet/topology/validate.py index 4deb9b20..3d332df4 100644 --- a/decnet/topology/validate.py +++ b/decnet/topology/validate.py @@ -16,8 +16,11 @@ from ipaddress import IPv4Address, IPv4Network from typing import Any, Callable, Literal from decnet.fleet import all_service_names +from decnet.logging import get_logger from decnet.services.registry import get_service +log = get_logger("topology.validate") + Severity = Literal["error", "warning"] @@ -373,7 +376,8 @@ def check_no_host_port_collision(h: dict[str, Any]) -> list[ValidationIssue]: for c in psutil.net_connections(kind="inet") if c.status == psutil.CONN_LISTEN and c.laddr } - except Exception: + except ImportError: + log.warning("psutil not available; skipping host port collision check") return [] issues: list[ValidationIssue] = []