fix(gateway): surface missing linger in status and doctor (#1296)
* fix(gateway): surface missing linger in status and doctor Warn when a systemd user gateway service has linger disabled so users can spot the common 'gateway sleeps after logout' deployment issue from both hermes doctor and hermes gateway status. * fix(gateway): check linger status after install After installing the systemd user service, report whether linger is already enabled instead of always printing the generic hint. This makes post-install guidance match the user's actual deployment state.
This commit is contained in:
parent
6fa197f973
commit
fb3c163612
4 changed files with 231 additions and 7 deletions
|
|
@ -94,6 +94,39 @@ def check_info(text: str):
|
|||
print(f" {color('→', Colors.CYAN)} {text}")
|
||||
|
||||
|
||||
def _check_gateway_service_linger(issues: list[str]) -> None:
|
||||
"""Warn when a systemd user gateway service will stop after logout."""
|
||||
try:
|
||||
from hermes_cli.gateway import (
|
||||
get_systemd_linger_status,
|
||||
get_systemd_unit_path,
|
||||
is_linux,
|
||||
)
|
||||
except Exception as e:
|
||||
check_warn("Gateway service linger", f"(could not import gateway helpers: {e})")
|
||||
return
|
||||
|
||||
if not is_linux():
|
||||
return
|
||||
|
||||
unit_path = get_systemd_unit_path()
|
||||
if not unit_path.exists():
|
||||
return
|
||||
|
||||
print()
|
||||
print(color("◆ Gateway Service", Colors.CYAN, Colors.BOLD))
|
||||
|
||||
linger_enabled, linger_detail = get_systemd_linger_status()
|
||||
if linger_enabled is True:
|
||||
check_ok("Systemd linger enabled", "(gateway service survives logout)")
|
||||
elif linger_enabled is False:
|
||||
check_warn("Systemd linger disabled", "(gateway may stop after logout)")
|
||||
check_info("Run: sudo loginctl enable-linger $USER")
|
||||
issues.append("Enable linger for the gateway user service: sudo loginctl enable-linger $USER")
|
||||
else:
|
||||
check_warn("Could not verify systemd linger", f"({linger_detail})")
|
||||
|
||||
|
||||
def run_doctor(args):
|
||||
"""Run diagnostic checks."""
|
||||
should_fix = getattr(args, 'fix', False)
|
||||
|
|
@ -348,6 +381,8 @@ def run_doctor(args):
|
|||
check_warn(f"~/.hermes/state.db exists but has issues: {e}")
|
||||
else:
|
||||
check_info("~/.hermes/state.db not created yet (will be created on first session)")
|
||||
|
||||
_check_gateway_service_linger(issues)
|
||||
|
||||
# =========================================================================
|
||||
# Check: External tools
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue