fix: retry a stalled opossum file once before failing the build - #16
Merged
Merged
Conversation
I made test:compat a required CI check, and it is timing-sensitive. It failed on two pull requests and passed on a rerun of the same commit with no changes. A flaky required check is worse than no check, because it teaches you to ignore red — and that is a problem I introduced. The stall diagnostic added earlier is what made this diagnosable at all. Instead of "0 0 STALLED" it now prints the child's exit and output, which showed the real failure: an unhandled EOPENBREAKER rejection crashing the process at test.js:778. The race is in opossum's own test. It opens a breaker, waits exactly resetTimeout using a setTimeout of the same duration, then fires and expects a half-open probe. That is a dead heat and a loaded runner decides it; when the fire lands early the breaker is still open, and the .then() chain at that line has no .catch(), so the rejection is unhandled and the process dies. A single retry keeps the signal — a genuine break fails twice — without the noise. The report distinguishes "one attempt" from "two attempts" so a real regression still reads as one. Not a root cause, and the comment says so. Matching another library's exact timer ordering is not something a compatibility layer can guarantee from outside, and the alternative — dropping the check — loses the 362-of-362 guarantee that is the whole basis of the migration claim.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
test:compatis a required check and it's timing-sensitive — failed on two PRs, passed on a rerun of the same commit with no changes. A flaky required check trains you to ignore red.The stall diagnostic added earlier surfaced the real cause: an unhandled
EOPENBREAKERcrashing the process attest.js:778. opossum's test waits exactlyresetTimeoutthen fires expecting half-open — a dead heat a loaded runner decides, on a.then()chain with no.catch().One retry keeps the signal (a real break fails twice) without the noise. Not a root cause, and the comment says so.