Repository navigation
Conversation
…does not fail CI HTTP3HandshakeFailed is an intermittent QUIC handshake failure that appears on any h3 test in the parallel CI batch under load. The runner re-runs a failed batch file alone only when test/flaky-tests.txt lists it. Every other h3 test in the batch is listed (serve-http3, fetch-http3-client, fetch-http3-cold-post, fetch-backpressure, serve-http2-lifecycle, serve-http2), so the flake self-heals on the run-alone. These four were omitted, so one flake turns the whole job red with no retry: - test/js/bun/http/serve-direct-readable-stream.test.ts - test/js/bun/http/serve-protocols.test.ts - test/js/bun/stream/direct-readable-stream.test.tsx - test/js/web/fetch/fetch-http3-adversarial.test.ts Add them so a batch failure re-runs the file alone, where it passes.
|
Updated 1:24 AM PT - Sep 6th, 2026
✅ @robobun, your commit 3d247ab2d5286648aaf9b8f1d93b6744dfe16a62 passed in 🧪 To try this PR locally: bunx bun-pr 41497That installs a local version of the PR into your bun-41497 --bun |
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Essentials Run ID: 📒 Files selected for processing (1)
Included review availability: Your plan provides up to 10 included reviews per hour; 0 remain after this review. WalkthroughThe test tracking file now lists four additional HTTP/3-related flaky tests covering readable streams, protocol tests, stream tests, and adversarial fetch tests. ChangesHTTP/3 flaky-test tracking
Merge Risk: ⚪ Minimal · up to The HTTP/3 tests retain coverage and will be rerun individually after intermittent parallel-run failures. No current merge-blocking risk is identified. 🚥 Pre-merge checks | ✅ 4✅ Passed checks (4 passed)
Comment |
There was a problem hiding this comment.
LGTM — data-only allowlist edit matching the sibling h3 entries already in the file.
What was reviewed:
- All four added paths exist on disk and parse through
flakyTestsinscripts/runner.node.mjs(split on#, trim). - Entries land in alphabetical order and match the neighboring comment format; each names the observed failure (
HTTP3HandshakeFailed) with build numbers. - Coverage is not reduced — the allowlist only enables the run-alone retry after a parallel-batch failure; the files still run in full.
Extended reasoning...
Overview
The PR adds four lines to test/flaky-tests.txt, listing h3-exercising test files that intermittently fail with HTTP3HandshakeFailed when run inside the parallel CI batch but pass when re-run alone. The runner (scripts/runner.node.mjs) only re-runs a batch-failed file in isolation when it appears in this allowlist; sibling h3 tests (serve-http3.test.ts, fetch-http3-client.test.ts, serve-http2-lifecycle.test.ts) are already listed for the same reason. This change extends the same treatment to four files that were omitted.
Security risks
None. This is a plaintext allowlist consumed by the CI test runner; it does not affect the shipped binary, touch no auth/crypto/network code, and introduces no executable content.
Level of scrutiny
Low. It is a mechanical data-file edit following an established repo pattern. I verified the four paths exist, that the parser (line.split("#")[0].trim()) accepts the two-space + comment format used, that alphabetical ordering is preserved at each insertion point, and that each entry documents the observed failure with specific build numbers — satisfying REVIEW.md's requirement that skips/flaky markers name the observed failure. .github/CODEOWNERS does not cover test/flaky-tests.txt.
Other factors
The allowlist does not skip or weaken tests; it only enables a run-alone retry after a parallel-batch failure, so full coverage is retained. The PR description acknowledges the underlying QUIC handshake-under-load issue as a separate investigation, which is the appropriate scoping. No prior reviewer objections appear in the timeline.
Problem
test/js/bun/stream/direct-readable-stream.test.tsxwent red on main in build 110599 (debian 13 aarch64), failing one h3 case withHTTP3HandshakeFailed fetching "https://127.0.0.1:50025/0". A red test on main blocks every open PR.HTTP3HandshakeFailedis an intermittent QUIC handshake failure that hits any h3 test when it runs in the parallel CI batch under load. It has shown onserve-protocols,fetch-http3-adversarial,serve-http3,fetch-backpressure,fetch-http3-clientand others over many builds (for example 92885, 107194, 108109, 108378, 108460, 109304, 109337, 109428, 110120, 110131, 110280, 110298, 110599). The same case passes when the runner re-runs the file alone.test/flaky-tests.txtlists it (scripts/runner.node.mjs,isFlakyTest). The other h3 batch tests are all listed, so the flake self-heals. Four h3 files were omitted, so one flake fails the whole job with no retry.Fix
test/flaky-tests.txt:serve-direct-readable-stream.test.ts,serve-protocols.test.ts,stream/direct-readable-stream.test.tsx,fetch/fetch-http3-adversarial.test.ts.flakyTests/isFlakyTestinscripts/runner.node.mjsand match the batch-relative titles. Ran the parallel batch of 202 batch-eligible files locally 11 times with the release binary (bun test --parallel=3); the flake did not reproduce on this 16-core linux box, consistent with it being load and platform dependent.Background
bun test --parallelbatch per shard. A file qualifies throughtest/parallel-allowlist.jsonminustest/parallel-denylist.txt.test/flaky-tests.txtnames it. A file not listed makes the whole job red on its first batch failure.Bun.serveh3 listener run on separate event loops and lsquic engines and talk over loopback UDP. Under heavy, oversubscribed CI load the handshake occasionally fails fast, which surfaces asHTTP3HandshakeFailed.Notes
The deeper question of why the QUIC handshake fails under load (a dropped Initial, a stale pooled session on the shared client UDP endpoint after a server port is reused across test files, or similar) is a separate product issue. It is rare, load and platform dependent, and did not reproduce locally despite repeated parallel-batch runs, so it cannot be proven fail-before to the gate here. It is handed off for dedicated investigation. This PR restores main to green for every PR in the established way the repo already manages this exact flake.Culprit for the visibility of the break: the parallel batch runner (#36175, #39373) plus the retry-only-if-listed rule (#41204) mean an unlisted batch-eligible h3 file fails hard on a flake. The fix follows the same pattern the sibling h3 entries already use.
no test proof · iteration 0 · no src or test change; test-proof not applicable