Skip to content

Fix out-of-order session recovery#368

Closed
wangalec wants to merge 1 commit intomainfrom
alecw/out-of-order-hard-reconnect
Closed

Fix out-of-order session recovery#368
wangalec wants to merge 1 commit intomainfrom
alecw/out-of-order-hard-reconnect

Conversation

@wangalec
Copy link
Copy Markdown

@wangalec wangalec commented Apr 7, 2026

Why

Out-of-order River messages currently only close the active connection, which lets poisoned sessions transparently reconnect and repeat the same sequencing failure. This hardens recovery so corrupted sessions reconnect cleanly instead of reusing broken state.

What changed

  • treat forward sequence gaps as invalid session state and trigger a hard reconnect instead of silently preserving the existing session
  • keep generic invalid-message handling unchanged so parse failures do not loop on reconnect
  • add state machine and transport coverage for server-detected and client-detected out-of-order recovery paths

Versioning

  • Breaking protocol change
  • Breaking ts/js API change

Test plan

  • direnv exec /home/developer/replit/river npm exec eslint -- transport/sessionStateMachine/SessionConnected.ts transport/client.ts transport/server.ts transport/sessionStateMachine/stateMachine.test.ts transport/transport.test.ts
  • direnv exec /home/developer/replit/river npm run test:single -- transport/sessionStateMachine/stateMachine.test.ts transport/transport.test.ts

Revertibility

Safe to revert. This only changes River transport recovery behavior and tests; it does not change the wire schema or any persisted state.

~ written by Zerg 👾

Treat forward sequence gaps as unrecoverable session state so reconnects create a fresh connection instead of reusing a poisoned session.
@wangalec wangalec added the zergling-authored PRs authored by Zerg label Apr 7, 2026
@wangalec wangalec marked this pull request as ready for review April 7, 2026 15:18
@wangalec wangalec requested a review from a team as a code owner April 7, 2026 15:18
@wangalec wangalec requested review from Monkatraz and jackyzha0 and removed request for a team April 7, 2026 15:18
@wangalec wangalec closed this Apr 7, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

zergling-authored PRs authored by Zerg

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant