Skip to content

jmp shell Unix socket becomes unreachable when router tunnel drops; tunnel should auto-reconnect #638

@ambient-code

Description

@ambient-code

Summary

When using jmp shell, the connection path is:

j (CLI) → Unix socket → [local proxy] ──tunnel──► jumpstarter-router ──► exporter

If the tunnel leg (between the local proxy and the jumpstarter-router) drops while the shell session is still active, the local Unix socket remains up but all j commands time out with:

Error: Service is temporarily unavailable or unreachable. Verify endpoint/network and retry.
Details: failed to connect to all addresses; last error: UNKNOWN: unix:/run/user/<uid>/jumpstarter-<id>/socket: connection attempt timed out before receiving SETTINGS frame

The proxy does not detect the tunnel failure and does not attempt to reconnect. The only workaround is to exit and re-enter the shell, which recreates the tunnel from scratch.

Steps to Reproduce

  1. Acquire a lease and enter a jmp shell
  2. Perform operations (e.g. flash a device)
  3. While still in the shell, allow the router tunnel to drop (observed intermittently; in the reported case it happened ~14:15 eastern after sustained use)
  4. Run any j command (e.g. j power cycle)
  5. Observe the SETTINGS frame timeout error

Expected Behavior

The local proxy inside jmp shell should detect when the router tunnel drops and transparently re-establish it, so j commands continue to work without requiring the user to exit and re-enter the shell.

Actual Behavior

The tunnel drop is not detected. The Unix socket stays up but all commands hang and eventually time out waiting for the HTTP/2 SETTINGS frame. Re-entering the shell resolves the issue.

Notes

  • The device/exporter itself is not involved in this failure — the breakage is in the tunnel between the client-side local proxy and the jumpstarter-router
  • Reproducibility: observed intermittently during sustained shell sessions; not yet confirmed to be reproducible on demand
  • Reported via Slack by sbertram; majopela opened this issue to track it

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions