Skip to content

Check how servers handle requests that go wrong - #14

Merged
bbatsov merged 1 commit into
mainfrom
robust
Oct 23, 2026
Merged

bbatsov merged 1 commit into
mainfrom
robust

Conversation

@bbatsov

@bbatsov bbatsov commented Oct 23, 2026

Copy link
Copy Markdown
Contributor

These run last, since a server that fails them may not be around for the next check. robust.wrong-types is only a warning, as no client we know of sends fields of the wrong type, but a request that never gets done fails it anyway, which is what happens with nREPL.

A server that goes down at a frame it can't read takes every client
with it, and a session that stops answering takes a REPL along. The new
checks send frames that aren't requests (on connections the wire rules
don't grade, as no reply to them can be right), an eval with line as a
string, and interrupt an eval whose client went away, and look at
whether the server and the session keep answering. One more makes sure
an eval in one session doesn't hold up the others.

nREPL 1.8.0 never answers the eval with the wrong types (nrepl#477) and,
after a client went away in the middle of an eval, never sends the done
of the next eval in that session. Babashka hangs on the wrong types too,
and a bencode string takes jank down.
@bbatsov
bbatsov merged commit 07d6e71 into main Oct 23, 2026
5 checks passed
@bbatsov
bbatsov deleted the robust branch October 23, 2026 18:07
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