Skip to content

Dashboard and hub keep idle connections 65s - #101

Merged
hhff merged 1 commit into
mainfrom
keepalive
Nov 5, 2026
Merged

hhff merged 1 commit into
mainfrom
keepalive

Conversation

@hhff

@hhff hhff commented Nov 5, 2026

Copy link
Copy Markdown
Member

What

  • scripts/devteam.mjs: the dashboard and hub servers set keepAliveTimeout to 65 s and headersTimeout to 66 s (keepAlive()).
  • test/kit.test.mjs: both answer with Keep-Alive: timeout=65.

Why

The dashboard tests failed intermittently on macOS with Node 18, always as 'fetch failed' on the first request after a slow CLI step (secrets, review answers). Node's default 5 s keepAliveTimeout closes an idle socket that Node 18's fetch (about 4 s idle reuse) can be just about to reuse, and that request fails. A server timeout longer than any client's means the client always closes first. Browsers hold idle sockets too, so an owner's click right after a pause could hit the same race.

Migration

None. Restart the dashboard after the sync.

Tests

The hub test passes on Node 18. The full Node 18 suite on this branch, which is the real check that the two flaky tests stop failing, runs after the open PRs' local runs.

🤖 Generated with Claude Code

… is never closed under it

Node's 5s default keepAliveTimeout closed idle sockets that a client was about to reuse (Node
18's fetch keeps them about 4s), and that request failed with 'fetch failed'. That is the
intermittent dashboard-test failure on macOS + Node 18, and browsers can hit the same race.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@hhff
hhff merged commit b1a9688 into main Nov 5, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant