Skip to content

test: deflake test-http2-options-max-headers-block-length #57959

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Conversation

lpinca
Copy link
Member

@lpinca lpinca commented Apr 21, 2025

The socket can be closed while data is still being written, causing an ECONNRESET error to be emitted on the client. Add a listener for it.

The socket can be closed while data is still being written, causing an
`ECONNRESET` error to be emitted on the client. Add a listener for it.
@nodejs-github-bot nodejs-github-bot added needs-ci PRs that need a full CI run. test Issues and PRs related to the tests. labels Apr 21, 2025
@lpinca
Copy link
Member Author

lpinca commented Apr 21, 2025

See https://ci.nodejs.org/job/node-test-commit-osx/64691/nodes=osx13-arm64/testReport/junit/(root)/parallel/test_http2_options_max_headers_block_length/

---
duration_ms: 59.337
exitcode: 1
severity: fail
stack: |-
  node:events:485
        throw er; // Unhandled 'error' event
        ^

  Error: read ECONNRESET
      at TCP.onStreamRead (node:internal/stream_base_commons:216:20)
  Emitted 'error' event on ClientHttp2Session instance at:
      at emitClose (node:internal/http2/core:1123:10)
      at process.processTicksAndRejections (node:internal/process/task_queues:90:21) {
    errno: -54,
    code: 'ECONNRESET',
    syscall: 'read'
  }

  Node.js v24.0.0-pre
...

@lpinca
Copy link
Member Author

lpinca commented Apr 21, 2025

It is also easy to reproduce locally.

$ npx envinfo --system

  System:
    OS: macOS 15.4.1
    CPU: (16) x64 Intel(R) Xeon(R) W-2140B CPU @ 3.20GHz
    Memory: 9.61 GB / 32.00 GB
    Shell: 5.2.37 - /usr/local/bin/bash

Before

$ ./tools/test.py --repeat=1000 test/parallel/test-http2-options-max-headers-block-length.js 
=== release test-http2-options-max-headers-block-length ===                   
Path: parallel/test-http2-options-max-headers-block-length
node:events:485
      throw er; // Unhandled 'error' event
      ^

Error: read ECONNRESET
    at TCP.onStreamRead (node:internal/stream_base_commons:216:20)
Emitted 'error' event on ClientHttp2Session instance at:
    at emitClose (node:internal/http2/core:1123:10)
    at process.processTicksAndRejections (node:internal/process/task_queues:90:21) {
  errno: -54,
  code: 'ECONNRESET',
  syscall: 'read'
}

Node.js v24.0.0-pre
Command: out/Release/node --test-reporter=./test/common/test-error-reporter.js --test-reporter-destination=stdout /Users/luigi/code/node/test/parallel/test-http2-options-max-headers-block-length.js

...

[00:13|% 100|+ 983|-  17]: Done

Failed tests:
out/Release/node --test-reporter=./test/common/test-error-reporter.js --test-reporter-destination=stdout /Users/luigi/code/node/test/parallel/test-http2-options-max-headers-block-length.js
....

After

$ ./tools/test.py --repeat=1000 test/parallel/test-http2-options-max-headers-block-length.js 
[00:13|% 100|+ 1000|-   0]: Done                                              

All tests passed.

Copy link

codecov bot commented Apr 21, 2025

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 90.27%. Comparing base (e773e09) to head (4bde5e9).
Report is 20 commits behind head on main.

Additional details and impacted files
@@           Coverage Diff           @@
##             main   #57959   +/-   ##
=======================================
  Coverage   90.26%   90.27%           
=======================================
  Files         630      630           
  Lines      186137   186142    +5     
  Branches    36476    36480    +4     
=======================================
+ Hits       168018   168041   +23     
+ Misses      10979    10978    -1     
+ Partials     7140     7123   -17     

see 25 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@lpinca lpinca added the request-ci Add this label to start a Jenkins CI on a PR. label Apr 21, 2025
@github-actions github-actions bot added request-ci-failed An error occurred while starting CI via request-ci label, and manual interventon is needed. and removed request-ci Add this label to start a Jenkins CI on a PR. labels Apr 21, 2025
Copy link
Contributor

Failed to start CI
   ⚠  No approving reviews found
   ✘  Refusing to run CI on potentially unsafe PR
https://github.com/nodejs/node/actions/runs/14574096677

@LiviaMedeiros LiviaMedeiros added request-ci Add this label to start a Jenkins CI on a PR. and removed request-ci-failed An error occurred while starting CI via request-ci label, and manual interventon is needed. labels Apr 21, 2025
@github-actions github-actions bot removed the request-ci Add this label to start a Jenkins CI on a PR. label Apr 21, 2025
@nodejs-github-bot
Copy link
Collaborator

Copy link
Member

@joyeecheung joyeecheung left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It feels like a gotcha in the API to me that the client can get another error event if the goaway is not coming in fast enough when the client reads the socket (or is that a bug? cc @nodejs/http2 )..but then the docs doesn't say that it's impossible anyway.

@nodejs-github-bot
Copy link
Collaborator

@LiviaMedeiros LiviaMedeiros added the author ready PRs that have at least one approval, no pending requests for changes, and a CI started. label Apr 22, 2025
@lpinca lpinca added the commit-queue Add this label to land a pull request using GitHub Actions. label Apr 24, 2025
@nodejs-github-bot nodejs-github-bot removed the commit-queue Add this label to land a pull request using GitHub Actions. label Apr 24, 2025
@nodejs-github-bot nodejs-github-bot merged commit 555aeb3 into nodejs:main Apr 24, 2025
76 checks passed
@nodejs-github-bot
Copy link
Collaborator

Landed in 555aeb3

@lpinca lpinca deleted the deflake/test-http2-options-max-headers-block-length branch April 24, 2025 05:08
RafaelGSS pushed a commit that referenced this pull request May 1, 2025
The socket can be closed while data is still being written, causing an
`ECONNRESET` error to be emitted on the client. Add a listener for it.

PR-URL: #57959
Reviewed-By: LiviaMedeiros <livia@cirno.name>
Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
RafaelGSS pushed a commit that referenced this pull request May 2, 2025
The socket can be closed while data is still being written, causing an
`ECONNRESET` error to be emitted on the client. Add a listener for it.

PR-URL: #57959
Reviewed-By: LiviaMedeiros <livia@cirno.name>
Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
aduh95 pushed a commit that referenced this pull request May 6, 2025
The socket can be closed while data is still being written, causing an
`ECONNRESET` error to be emitted on the client. Add a listener for it.

PR-URL: #57959
Reviewed-By: LiviaMedeiros <livia@cirno.name>
Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
aduh95 pushed a commit that referenced this pull request May 6, 2025
The socket can be closed while data is still being written, causing an
`ECONNRESET` error to be emitted on the client. Add a listener for it.

PR-URL: #57959
Reviewed-By: LiviaMedeiros <livia@cirno.name>
Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
RafaelGSS pushed a commit that referenced this pull request May 14, 2025
The socket can be closed while data is still being written, causing an
`ECONNRESET` error to be emitted on the client. Add a listener for it.

PR-URL: #57959
Reviewed-By: LiviaMedeiros <livia@cirno.name>
Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
aduh95 pushed a commit that referenced this pull request May 16, 2025
The socket can be closed while data is still being written, causing an
`ECONNRESET` error to be emitted on the client. Add a listener for it.

PR-URL: #57959
Reviewed-By: LiviaMedeiros <livia@cirno.name>
Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
aduh95 pushed a commit that referenced this pull request May 17, 2025
The socket can be closed while data is still being written, causing an
`ECONNRESET` error to be emitted on the client. Add a listener for it.

PR-URL: #57959
Reviewed-By: LiviaMedeiros <livia@cirno.name>
Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
aduh95 pushed a commit that referenced this pull request May 17, 2025
The socket can be closed while data is still being written, causing an
`ECONNRESET` error to be emitted on the client. Add a listener for it.

PR-URL: #57959
Reviewed-By: LiviaMedeiros <livia@cirno.name>
Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
aduh95 pushed a commit that referenced this pull request May 17, 2025
The socket can be closed while data is still being written, causing an
`ECONNRESET` error to be emitted on the client. Add a listener for it.

PR-URL: #57959
Reviewed-By: LiviaMedeiros <livia@cirno.name>
Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
aduh95 pushed a commit that referenced this pull request May 18, 2025
The socket can be closed while data is still being written, causing an
`ECONNRESET` error to be emitted on the client. Add a listener for it.

PR-URL: #57959
Reviewed-By: LiviaMedeiros <livia@cirno.name>
Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
aduh95 pushed a commit that referenced this pull request May 19, 2025
The socket can be closed while data is still being written, causing an
`ECONNRESET` error to be emitted on the client. Add a listener for it.

PR-URL: #57959
Reviewed-By: LiviaMedeiros <livia@cirno.name>
Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
marco-ippolito pushed a commit that referenced this pull request Jun 5, 2025
The socket can be closed while data is still being written, causing an
`ECONNRESET` error to be emitted on the client. Add a listener for it.

PR-URL: #57959
Reviewed-By: LiviaMedeiros <livia@cirno.name>
Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
marco-ippolito pushed a commit that referenced this pull request Jun 5, 2025
The socket can be closed while data is still being written, causing an
`ECONNRESET` error to be emitted on the client. Add a listener for it.

PR-URL: #57959
Reviewed-By: LiviaMedeiros <livia@cirno.name>
Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
marco-ippolito pushed a commit that referenced this pull request Jun 10, 2025
The socket can be closed while data is still being written, causing an
`ECONNRESET` error to be emitted on the client. Add a listener for it.

PR-URL: #57959
Reviewed-By: LiviaMedeiros <livia@cirno.name>
Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
marco-ippolito pushed a commit that referenced this pull request Jun 11, 2025
The socket can be closed while data is still being written, causing an
`ECONNRESET` error to be emitted on the client. Add a listener for it.

PR-URL: #57959
Reviewed-By: LiviaMedeiros <livia@cirno.name>
Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
author ready PRs that have at least one approval, no pending requests for changes, and a CI started. needs-ci PRs that need a full CI run. test Issues and PRs related to the tests.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants