Skip to content

fix(mcp): recover when a live hyperd becomes unresponsive #242

Description

@StefanSteiner

Problem

The MCP daemon currently restarts its managed hyperd when the child exits, or after a client reports a connection-lost error. It does not recover a process that remains alive but stops serving requests.

Reproduction

  1. Start the release hyperdb-mcp daemon.
  2. Send SIGSTOP to its managed hyperd child.
  3. Invoke a harmless read-only MCP query such as SELECT 1.

Observed: the query remained blocked for more than 30 seconds; the daemon continued to see the child as alive (process state T) and did not restart it. The test client had to be interrupted.

Desired behavior

A wedged-but-live hyperd should be detected with bounded latency. The current request may return a clear timeout/error, but a later request should connect to a rate-limited replacement hyperd. Do not automatically replay a potentially mutating request.

Possible direction

Add a bounded query/connection timeout or an independent responsiveness probe that feeds the existing REPORT_HYPERD_ERROR and rate-limited restart path. Cover the live-but-unresponsive case with an isolated, cleanup-safe integration test.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions