Commits
Tarun Sukhani authored 06ae771df03
fix(test): fail fast behind an abandoned invocation (PF-159) (release 1.13.47) FunctionalTest.makeRequest waits 30s on the completion latch and then throws, but never cancels the submitted invocation. Cancelling is not safe: the executor is single-threaded precisely because tests share static request/response/render state, and interrupting mid-invocation would leave that state corrupt for every following test. The abandoned invocation therefore keeps the executor's only thread, so every subsequent request queues behind it and times out in turn. The report then shows symptoms instead of the cause - a trivial login() times out, assertions that depend on the resulting session see 401, and rows the abandoned invocation commits much later surface as StaleStateException in unrelated test classes. TestEngine now records the abandoned invocation next to the executor it blocks. makeRequest checks it first and fails immediately, naming the request that never completed, instead of spending 30 seconds per remaining test on a misleading failure. The record self-clears once the invocation finishes, so a legitimately slow action (SSE, continuations) does not permanently poison the executor - which matters in `play test`, where the JVM and its static executor survive re-runs. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>