test: make http2 close-while-writing single-shot#63388
Conversation
The test only needs one request data chunk to queue the server write and destroy the client stream. Using a persistent data listener can queue multiple writes and multiple destroys from the same request body, which makes the test occasionally hang until the harness timeout. Signed-off-by: Kamat, Trivikram <[email protected]> Assisted-by: openai:gpt-5.5
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #63388 +/- ##
==========================================
- Coverage 90.06% 90.05% -0.01%
==========================================
Files 714 714
Lines 225629 225648 +19
Branches 42702 42697 -5
==========================================
+ Hits 203211 203215 +4
+ Misses 14232 14219 -13
- Partials 8186 8214 +28 🚀 New features to boost your workflow:
|
I don't really follow the logic, how scheduling multiple destroy would result in a hang? That sounds like a bug |
|
You're right. I should have searched for test-http2-close-while-writing before attempting this PR which would have helped me discover prior attempts. I've been following that in my latest 5 PRs. |
|
I've posted a bugfix attempt in https://www.github.com/nodejs/node/pull/63439, and will request review after GitHub CI is successful. |
This makes
test-http2-close-while-writinghandle only the first server-siderequest data chunk.
The test only needs one chunk to exercise the regression path: the server queues
a write, then the client stream is destroyed on the next tick. Keeping the data
listener active can queue multiple writes and schedule multiple destroys for the
same request body, which makes the test occasionally hang until the harness
timeout.
Refs: https://github.com/nodejs/reliability/blob/main/reports/2026-05-17.md#jstest-failure
Assisted-by: openai:gpt-5.5