ReviewOS

home-lang/home

Port Socket.IO connection-state recovery corpus

#298
Closed chris opened this 10 days ago ·
10 days ago

Track the contiguous Bun corpus slice at js/third_party/socket.io/socket.io-connection-state-recovery.test.ts (position 4051).

Required parity:

  • persist logical Socket.IO sessions across Engine.IO transport replacement;
  • recover original socket/private ids, rooms, data attributes, and ordered missed broadcast/room/direct packets;
  • preserve packet offsets and emit recovered CONNECT after missed events;
  • skip recovery middleware by default while honoring skipMiddlewares: false;
  • reject unknown recovery sessions by creating a fresh identity;
  • leave adapter persistence hooks untouched when recovery is disabled;
  • fix positive-timer ordering so resolved promise chains run before watchdog timeouts;
  • keep structured, packet-redacted protocol diagnostics and add permanent regressions.
10 days ago

Implemented and pushed in https://github.com/home-lang/home/commit/e84fb64f5.

Coverage now includes:

  • logical Socket.IO sessions persisted independently of Engine.IO transports;
  • recovery of original socket/private ids, rooms, data, and recovered status;
  • ordered replay of missed server broadcasts, room broadcasts, and direct socket events before the recovered CONNECT packet;
  • monotonically generated packet offsets;
  • default middleware skipping and skipMiddlewares: false execution;
  • fresh identities for unknown recovery requests and no adapter persistence calls while recovery is disabled;
  • shared positive-timer ordering fixed so resolved promise chains run before watchdog timers;
  • an explicit empty-poll protocol error instead of an ambiguous empty response.

Verification:

  • focused position 4051: 1 file, 7 passed, 0 failed/todo/unsupported/allowed-empty;
  • positions 4050–4051: 2 files, 9 passed, 4 todo, 0 failed/unsupported/allowed-empty;
  • permanent gRPC error-stack, SQL adapter-contract, and 34-case third-party diagnostic suites all pass.

Sign in to comment on this issue.