You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A long-lived Hermes worker reconnects its MCP client per turn but leaks the
write-end of prior stdio children, so those children never receive EOF and
block forever in reader.lines() — one orphan leaks per reconnect until SQLite
handle contention makes the vault appear 'down' (~50 procs / 1.4GB observed).
Rewrite run_server() into a reader-thread + recv_timeout loop. A stdio server
with zero client traffic for MIMIR_IDLE_TIMEOUT_SECS (default 600, 0=disable)
self-terminates and frees its DB handle. Active clients always send a request
within the window and are unaffected; orphans self-reap. Fixes the leak at the
source instead of relying on an external process reaper.
- parse_idle_timeout() extracted + unit-tested (idle_timeout_parsing_*)
- runtime-verified: idle exits on schedule, active survives, =0 disables
0 commit comments