Skip to content

http: pipeline leak#62534

Open
ronag wants to merge 1 commit intonodejs:mainfrom
ronag:http-pipeline-lkea
Open

http: pipeline leak#62534
ronag wants to merge 1 commit intonodejs:mainfrom
ronag:http-pipeline-lkea

Conversation

@ronag
Copy link
Copy Markdown
Member

@ronag ronag commented Apr 1, 2026

When a socket with pipelined requests is destroyed then some requests will leak.

@ronag ronag requested a review from mcollina April 1, 2026 12:41
@nodejs-github-bot
Copy link
Copy Markdown
Collaborator

nodejs-github-bot commented Apr 1, 2026

Review requested:

  • @nodejs/http
  • @nodejs/net

@nodejs-github-bot nodejs-github-bot added http Issues or PRs related to the http subsystem. needs-ci PRs that need a full CI run. labels Apr 1, 2026
When a socket with pipelined requests is destroyed then some requests
will leak.
@ronag ronag force-pushed the http-pipeline-lkea branch from 50c1e4c to 58aded6 Compare April 1, 2026 12:42
@codecov
Copy link
Copy Markdown

codecov bot commented Apr 1, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 89.71%. Comparing base (cc96741) to head (58aded6).
⚠️ Report is 40 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main   #62534      +/-   ##
==========================================
- Coverage   91.55%   89.71%   -1.84%     
==========================================
  Files         351      695     +344     
  Lines      147653   214154   +66501     
  Branches    23224    41022   +17798     
==========================================
+ Hits       135179   192134   +56955     
- Misses      12217    14070    +1853     
- Partials      257     7950    +7693     
Files with missing lines Coverage Δ
lib/_http_outgoing.js 95.78% <100.00%> (+0.10%) ⬆️
lib/_http_server.js 97.28% <100.00%> (+0.37%) ⬆️

... and 482 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.

Copy link
Copy Markdown
Member

@mcollina mcollina left a comment

Choose a reason for hiding this comment

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

lgtm

@mcollina mcollina added the request-ci Add this label to start a Jenkins CI on a PR. label Apr 1, 2026
@github-actions github-actions bot removed the request-ci Add this label to start a Jenkins CI on a PR. label Apr 1, 2026
@nodejs-github-bot
Copy link
Copy Markdown
Collaborator

@ronag ronag added request-ci Add this label to start a Jenkins CI on a PR. author ready PRs that have at least one approval, no pending requests for changes, and a CI started. and removed needs-ci PRs that need a full CI run. labels Apr 2, 2026
@ronag ronag requested a review from jasnell April 2, 2026 06:10
@github-actions github-actions bot removed the request-ci Add this label to start a Jenkins CI on a PR. label Apr 2, 2026
@nodejs-github-bot
Copy link
Copy Markdown
Collaborator

@nodejs-github-bot
Copy link
Copy Markdown
Collaborator

this.once('socket', function socketDestroyOnConnect(socket) {
socket.destroy(error);
});
process.nextTick(emitDestroyNT, this);
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

out of curiosity, does queueMicrotask has a different effect on this?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Hard to tell... the whole task execution is currently undefined behavior. I think we need to at least be consistent in node and always use one or the rother.

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. http Issues or PRs related to the http subsystem.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants