GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — http: reduce parts in chunked response when corking by ronag · Pull Request #50167 · nodejs/node

Conversation

@ronag

@ronag ronag commented Oct 12, 2023 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Member

Avoid splitting chunked responses into multiple parts when corking. This makes a large difference performance-wise on the client side.

Previously when writing to a chunked response Node would create a separate chunk for each call to .write(...) regardless whether the response was corked or not. This leads to unnecessary overhead both on the client and server side.

This PR fixes this by creating a single chunk for all calls to write(...) when uncorking the response.

Consider the following example based on https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Transfer-Encoding#chunked_encoding:

res.cork();
res.write('Mozilla');
res.write(' Developer Network');
res.uncork();

At the beginning of each chunk you need to add the length of the current chunk in hexadecimal format, followed by '\r\n' and then the chunk itself, followed by another '\r\n'. The terminating chunk is a regular chunk, with the exception that its length is zero.

Resulting in a response stream looking like this:

HTTP/1.1 200 OK
Content-Type: text/plain
Transfer-Encoding: chunked

7\r\n
Mozilla\r\n
18\r\n
 Developer Network\r\n
0\r\n
\r\n

After this PR everything is combined into a single chunk when uncorking the response bypassing a lot of unnecessary overhead.

HTTP/1.1 200 OK
Content-Type: text/plain
Transfer-Encoding: chunked

25\r\n
Mozilla Developer Network\r\n
0\r\n
\r\n

Refs: nodejs/performance#57

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

bricss and H4ad reacted with thumbs up emoji
All reactions
  • 👍 2 reactions
@nodejs-github-bot

nodejs-github-bot commented Oct 12, 2023

Copy link
Copy Markdown
Collaborator

Review requested:

  • @nodejs/http
  • @nodejs/net
All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@nodejs-github-bot nodejs-github-bot added http Issues and PRs related to the http subsystem. needs-ci PRs that need a full CI run. labels Oct 12, 2023
@ronag

ronag commented Oct 12, 2023 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Member Author

@nodejs/performance @nodejs/http

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@ronag
ronag force-pushed the batch-chunked branch from cb57988 to bf19809 Compare October 12, 2023 20:38
@ronag
ronag requested a review from mcollina October 12, 2023 20:38
@ronag
ronag marked this pull request as ready for review October 12, 2023 20:38
@ronag
ronag force-pushed the batch-chunked branch from bf19809 to d88a454 Compare October 12, 2023 20:41
@ronag
ronag force-pushed the batch-chunked branch from d88a454 to 9b46176 Compare October 12, 2023 20:41
@ronag
ronag force-pushed the batch-chunked branch from 9b46176 to becaa16 Compare October 12, 2023 20:41
@ronag
ronag force-pushed the batch-chunked branch from becaa16 to 7716ca5 Compare October 12, 2023 20:43
@ronag
ronag requested review from ShogunPanda and aduh95 October 12, 2023 20:43
@ronag ronag added the notable-change PRs with changes that should be highlighted in changelogs. label Oct 12, 2023
@github-actions

github-actions Bot commented Oct 12, 2023

Copy link
Copy Markdown
Contributor

The notable-change PRs with changes that should be highlighted in changelogs. label has been added by @ronag.

Please suggest a text for the release notes if you'd like to include a more detailed summary, then proceed to update the PR description with the text or a link to the notable change suggested text comment.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@ronag
ronag force-pushed the batch-chunked branch from 7716ca5 to ab42dda Compare October 12, 2023 20:47
@ronag
ronag force-pushed the batch-chunked branch from ab42dda to 20dc54d Compare October 12, 2023 20:47
@ronag

ronag commented Oct 12, 2023

Copy link
Copy Markdown
Member Author

@RafaelGSS maybe too tight with v21 but I think this is quite a notable change that can have impact.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

H4ad
H4ad reviewed Oct 12, 2023
View reviewed changes
Comment thread lib/_http_outgoing.js Resolved

Uh oh!

There was an error while loading. Please reload this page.

anonrig
anonrig reviewed Oct 12, 2023
View reviewed changes
Comment thread lib/_http_outgoing.js Resolved

Uh oh!

There was an error while loading. Please reload this page.

@ronag
ronag force-pushed the batch-chunked branch from 8284afb to 21e15c1 Compare October 12, 2023 21:52
@ronag ronag added the request-ci Add this label to start a Jenkins CI on a PR. Only starts once the PR has an approving review. label Oct 12, 2023
@ronag
ronag force-pushed the batch-chunked branch from 21e15c1 to eeab917 Compare October 12, 2023 21:52
@ronag

ronag commented Oct 15, 2023

Copy link
Copy Markdown
Member Author

CITGM: https://ci.nodejs.org/view/Node.js-citgm/job/citgm-smoker/3329/

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

mcollina
mcollina approved these changes Oct 15, 2023
View reviewed changes

@mcollina mcollina left a comment

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

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

lgtm

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@mcollina mcollina added commit-queue PRs queued for automated landing through the Commit Queue. commit-queue-squash PRs the Commit Queue should land as one squashed commit. labels Oct 15, 2023
@nodejs-github-bot nodejs-github-bot added commit-queue-failed PRs whose Commit Queue landing failed and need manual intervention before retrying. and removed commit-queue PRs queued for automated landing through the Commit Queue. labels Oct 15, 2023
@nodejs-github-bot

nodejs-github-bot commented Oct 15, 2023

Copy link
Copy Markdown
Collaborator
Commit Queue failed
- Loading data for nodejs/node/pull/50167
✔  Done loading data for nodejs/node/pull/50167
----------------------------------- PR info ------------------------------------
Title      http: reduce parts in chunked response when corking (#50167)
Author     Robert Nagy  (@ronag)
Branch     ronag:batch-chunked -> nodejs:main
Labels     http, semver-major, notable-change, author ready, needs-ci, review wanted, needs-benchmark-ci, commit-queue-squash
Commits    4
 - http: reduce parts in chunked response when corking
 - fixup
 - Update _http_outgoing.js
 - Update _http_outgoing.js
Committers 2
 - Robert Nagy 
 - GitHub 
PR-URL: https://github.com/nodejs/node/pull/50167
Refs: https://github.com/nodejs/performance/issues/57
Reviewed-By: Stephen Belanger 
Reviewed-By: Matteo Collina 
------------------------------ Generated metadata ------------------------------
PR-URL: https://github.com/nodejs/node/pull/50167
Refs: https://github.com/nodejs/performance/issues/57
Reviewed-By: Stephen Belanger 
Reviewed-By: Matteo Collina 
--------------------------------------------------------------------------------
   ℹ  This PR was created on Thu, 12 Oct 2023 20:35:42 GMT
   ✔  Approvals: 2
   ✔  - Stephen Belanger (@Qard): https://github.com/nodejs/node/pull/50167#pullrequestreview-1676981875
   ✔  - Matteo Collina (@mcollina) (TSC): https://github.com/nodejs/node/pull/50167#pullrequestreview-1678717255
   ✘  semver-major requires at least 2 TSC approvals
   ✔  Last GitHub CI successful
   ℹ  Last Full PR CI on 2023-10-14T11:56:46Z: https://ci.nodejs.org/job/node-test-pull-request/54775/
   ℹ  Last CITGM CI on 2023-10-15T06:14:29Z: https://ci.nodejs.org/view/Node.js-citgm/job/citgm-smoker/3329/
- Querying data for job/node-test-pull-request/3329/
   ✔  Last Jenkins CI successful
--------------------------------------------------------------------------------
   ✔  Aborted `git node land` session in /home/runner/work/node/node/.ncu
https://github.com/nodejs/node/actions/runs/6522888569
All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@ronag

ronag commented Oct 15, 2023

Copy link
Copy Markdown
Member Author

@Trott Can you help landing this?

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@ronag

ronag commented Oct 15, 2023

Copy link
Copy Markdown
Member Author

@nodejs/tsc needs another approval. The semver major is because it might break clients that make incorrect assumptions about the chunking of responses.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

anonrig
anonrig approved these changes Oct 15, 2023
View reviewed changes
@anonrig anonrig added commit-queue PRs queued for automated landing through the Commit Queue. and removed commit-queue-failed PRs whose Commit Queue landing failed and need manual intervention before retrying. labels Oct 15, 2023
@nodejs-github-bot nodejs-github-bot removed the commit-queue PRs queued for automated landing through the Commit Queue. label Oct 15, 2023
@nodejs-github-bot
nodejs-github-bot merged commit d68d0ea into nodejs:main Oct 15, 2023
@nodejs-github-bot

nodejs-github-bot commented Oct 15, 2023

Copy link
Copy Markdown
Collaborator

Landed in d68d0ea

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@RafaelGSS

RafaelGSS commented Oct 15, 2023

Copy link
Copy Markdown
Member

@ronag can you update the PR to include a description for the blog post? Something easy for users, thank you!

ronag reacted with thumbs up emoji
All reactions
  • 👍 1 reaction

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

RafaelGSS added a commit that referenced this pull request Oct 15, 2023
@RafaelGSS @targos
2023-10-17, Version 21.0.0 (Current)
259bb24
Notable Changes:

doc:
  * promote fetch/webstreams from experimental to stable (Steven) #45684
esm:
  * use import attributes instead of import assertions (Antoine du Hamel) #50140
  * --experimental-default-type flag to flip module defaults (Geoffrey Booth) #49869
  * remove `globalPreload` hook (superseded by `initialize`) (Jacob Smith) #49144
fs:
  * add flush option to writeFile() functions (Colin Ihrig) #50009
  * (SEMVER-MAJOR) add globSync implementation (Moshe Atlow) #47653
http:
  * (SEMVER-MAJOR) reduce parts in chunked response when corking (Robert Nagy) #50167
lib:
  * (SEMVER-MINOR) add WebSocket client (Matthew Aitken) #49830
stream:
  * optimize Writable (Robert Nagy) #50012
test_runner:
  * (SEMVER-MAJOR) support passing globs (Moshe Atlow) #47653
vm:
  * use default HDO when importModuleDynamically is not set (Joyee Cheung) #49950

Semver-Major Commits:

* (SEMVER-MAJOR) reset embedder string to "-node.0" (Michaël Zasso) #49639
* (SEMVER-MAJOR) drop support for Visual Studio 2019 (Michaël Zasso) #49051
* (SEMVER-MAJOR) bump supported macOS and Xcode versions (Michaël Zasso) #49164
* (SEMVER-MAJOR) do not overwrite _writableState.defaultEncoding (Tobias Nießen) #49140
* (SEMVER-MAJOR) bump minimum ICU version to 73 (Michaël Zasso) #49639
* (SEMVER-MAJOR) V8: cherry-pick 8ec2651fbdd8 (Michaël Zasso) #49639
* (SEMVER-MAJOR) V8: cherry-pick 89b3702c92b0 (Michaël Zasso) #49639
* (SEMVER-MAJOR) V8: cherry-pick de9a5de2274f (Michaël Zasso) #49639
* (SEMVER-MAJOR) V8: cherry-pick b5b5d6c31bb0 (Michaël Zasso) #49639
* (SEMVER-MAJOR) V8: cherry-pick 93b1a74cbc9b (Michaël Zasso) #49639
* (SEMVER-MAJOR) V8: cherry-pick 1a3ecc2483b2 (Michaël Zasso) #49639
* (SEMVER-MAJOR) patch V8 to avoid duplicated zlib symbol (Michaël Zasso) #49639
* (SEMVER-MAJOR) remove usage of a C++20 feature from V8 (Michaël Zasso) #49639
* (SEMVER-MAJOR) avoid compilation error with ASan (Michaël Zasso) #49639
* (SEMVER-MAJOR) disable V8 concurrent sparkplug compilation (Michaël Zasso) #49639
* (SEMVER-MAJOR) silence irrelevant V8 warning (Michaël Zasso) #49639
* (SEMVER-MAJOR) always define V8_EXPORT_PRIVATE as no-op (Michaël Zasso) #49639
* (SEMVER-MAJOR) update V8 to 11.8.172.13 (Michaël Zasso) #49639
* (SEMVER-MAJOR) update llhttp to 9.1.2 (Paolo Insogna) #48981
* (SEMVER-MAJOR) validate options of `on` and `once` (Deokjin Kim) #46018
* (SEMVER-MAJOR) adjust `position` validation in reading methods (Livia Medeiros) #42835
* (SEMVER-MAJOR) add globSync implementation (Moshe Atlow) #47653
* (SEMVER-MAJOR) reduce parts in chunked response when corking (Robert Nagy) #50167
* (SEMVER-MAJOR) update usage of always on Atomics API (Michaël Zasso) #49639
* (SEMVER-MAJOR) mark URL/URLSearchParams as uncloneable and untransferable (Chengzhong Wu) #47497
* (SEMVER-MAJOR) remove aix directory case for package reader (Yagiz Nizipli) #48605
* (SEMVER-MAJOR) add `navigator.hardwareConcurrency` (Yagiz Nizipli) #47769
* (SEMVER-MAJOR) runtime deprecate punycode (Yagiz Nizipli) #47202
* (SEMVER-MAJOR) harmonize error code between ESM and CJS (Antoine du Hamel) #48606
* (SEMVER-MAJOR) do not treat `server.maxConnections=0` as `Infinity` (ignoramous) #48276
* (SEMVER-MAJOR) only defer _final call when connecting (Jason Zhang) #47385
* (SEMVER-MAJOR) rename internal NAPI_VERSION definition (Chengzhong Wu) #48501
* (SEMVER-MAJOR) update NODE_MODULE_VERSION to 120 (Michaël Zasso) #49639
* (SEMVER-MAJOR) throw DOMException on cloning non-serializable objects (Chengzhong Wu) #47839
* (SEMVER-MAJOR) throw DataCloneError on transfering untransferable objects (Chengzhong Wu) #47604
* (SEMVER-MAJOR) use private properties for strategies (Yagiz Nizipli) #47218
* (SEMVER-MAJOR) use private properties for encoding (Yagiz Nizipli) #47218
* (SEMVER-MAJOR) use private properties for compression (Yagiz Nizipli) #47218
* (SEMVER-MAJOR) skip v8-updates/test-linux-perf (Michaël Zasso) #49639
* (SEMVER-MAJOR) skip test-tick-processor-arguments on SmartOS (Michaël Zasso) #49639
* (SEMVER-MAJOR) adapt REPL test to V8 changes (Michaël Zasso) #49639
* (SEMVER-MAJOR) adapt test-fs-write to V8 internal changes (Michaël Zasso) #49639
* (SEMVER-MAJOR) update flag to disable SharedArrayBuffer (Michaël Zasso) #49639
* (SEMVER-MAJOR) adapt debugger tests to V8 11.4 (Philip Pfaffe) #49639
* (SEMVER-MAJOR) disallow array in `run` options (Raz Luvaton) #49935
* (SEMVER-MAJOR) support passing globs (Moshe Atlow) #47653
* (SEMVER-MAJOR) use `validateNumber` for `options.minDHSize` (Deokjin Kim) #49973
* (SEMVER-MAJOR) use validateFunction for `options.checkServerIdentity` (Deokjin Kim) #49896
* (SEMVER-MAJOR) add new V8 headers to distribution (Michaël Zasso) #49639
* (SEMVER-MAJOR) update V8 gypfiles for 11.8 (Michaël Zasso) #49639
* (SEMVER-MAJOR) update V8 gypfiles for 11.7 (Michaël Zasso) #49639
* (SEMVER-MAJOR) update V8 gypfiles for 11.6 (Michaël Zasso) #49639
* (SEMVER-MAJOR) update V8 gypfiles for 11.5 (Michaël Zasso) #49639
* (SEMVER-MAJOR) update V8 gypfiles for 11.4 (Michaël Zasso) #49639
* (SEMVER-MAJOR) runtime deprecate `promisify`-ing a function returning a `Promise` (Antoine du Hamel) #49609
* (SEMVER-MAJOR) freeze `dependencySpecifiers` array (Antoine du Hamel) #49720

PR-URL: #49870
Co-authored-by: Michaël Zasso <[email protected]>
@RafaelGSS RafaelGSS mentioned this pull request Oct 15, 2023
2023-10-17, Version 21.0.0 (Current) #49870
Merged
@ronag

ronag commented Oct 16, 2023

Copy link
Copy Markdown
Member Author

@RafaelGSS I tried improving the description.

RafaelGSS reacted with heart emoji
All reactions
  • ❤️ 1 reaction

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

RafaelGSS added a commit that referenced this pull request Oct 17, 2023
@RafaelGSS @targos
2023-10-17, Version 21.0.0 (Current)
38d0e69
Notable Changes:

doc:
  * promote fetch/webstreams from experimental to stable (Steven) #45684
esm:
  * use import attributes instead of import assertions (Antoine du Hamel) #50140
  * --experimental-default-type flag to flip module defaults (Geoffrey Booth) #49869
  * remove `globalPreload` hook (superseded by `initialize`) (Jacob Smith) #49144
fs:
  * add flush option to writeFile() functions (Colin Ihrig) #50009
  * (SEMVER-MAJOR) add globSync implementation (Moshe Atlow) #47653
http:
  * (SEMVER-MAJOR) reduce parts in chunked response when corking (Robert Nagy) #50167
lib:
  * (SEMVER-MINOR) add WebSocket client (Matthew Aitken) #49830
  * (SEMVER-MAJOR) add `navigator.hardwareConcurrency` (Yagiz Nizipli) #47769
stream:
  * optimize Writable (Robert Nagy) #50012
test_runner:
  * (SEMVER-MAJOR) support passing globs (Moshe Atlow) #47653
vm:
  * use default HDO when importModuleDynamically is not set (Joyee Cheung) #49950

Semver-Major Commits:

* (SEMVER-MAJOR) build: drop support for Visual Studio 2019 (Michaël Zasso) #49051
* (SEMVER-MAJOR) build: bump supported macOS and Xcode versions (Michaël Zasso) #49164
* (SEMVER-MAJOR) crypto: do not overwrite \_writableState.defaultEncoding (Tobias Nießen) #49140
* (SEMVER-MAJOR) deps: bump minimum ICU version to 73 (Michaël Zasso) #49639
* (SEMVER-MAJOR) deps: update V8 to 11.8.172.13 (Michaël Zasso) #49639
* (SEMVER-MAJOR) deps: update llhttp to 9.1.2 (Paolo Insogna) #48981
* (SEMVER-MAJOR) events: validate options of `on` and `once` (Deokjin Kim) #46018
* (SEMVER-MAJOR) fs: adjust `position` validation in reading methods (Livia Medeiros) #42835
* (SEMVER-MAJOR) fs: add globSync implementation (Moshe Atlow) #47653
* (SEMVER-MAJOR) http: reduce parts in chunked response when corking (Robert Nagy) #50167
* (SEMVER-MAJOR) lib: mark URL/URLSearchParams as uncloneable and untransferable (Chengzhong Wu) #47497
* (SEMVER-MAJOR) lib: remove aix directory case for package reader (Yagiz Nizipli) #48605
* (SEMVER-MAJOR) lib: add `navigator.hardwareConcurrency` (Yagiz Nizipli) #47769
* (SEMVER-MAJOR) lib: runtime deprecate punycode (Yagiz Nizipli) #47202
* (SEMVER-MAJOR) module: harmonize error code between ESM and CJS (Antoine du Hamel) #48606
* (SEMVER-MAJOR) net: do not treat `server.maxConnections=0` as `Infinity` (ignoramous) #48276
* (SEMVER-MAJOR) net: only defer \_final call when connecting (Jason Zhang) #47385
* (SEMVER-MAJOR) node-api: rename internal NAPI\_VERSION definition (Chengzhong Wu) #48501
* (SEMVER-MAJOR) src: update NODE\_MODULE\_VERSION to 120 (Michaël Zasso) #49639
* (SEMVER-MAJOR) src: throw DOMException on cloning non-serializable objects (Chengzhong Wu) #47839
* (SEMVER-MAJOR) src: throw DataCloneError on transfering untransferable objects (Chengzhong Wu) #47604
* (SEMVER-MAJOR) stream: use private properties for strategies (Yagiz Nizipli) #47218
* (SEMVER-MAJOR) stream: use private properties for encoding (Yagiz Nizipli) #47218
* (SEMVER-MAJOR) stream: use private properties for compression (Yagiz Nizipli) #47218
* (SEMVER-MAJOR) test\_runner: disallow array in `run` options (Raz Luvaton) #49935
* (SEMVER-MAJOR) test\_runner: support passing globs (Moshe Atlow) #47653
* (SEMVER-MAJOR) tls: use `validateNumber` for `options.minDHSize` (Deokjin Kim) #49973
* (SEMVER-MAJOR) tls: use validateFunction for `options.checkServerIdentity` (Deokjin Kim) #49896
* (SEMVER-MAJOR) util: runtime deprecate `promisify`-ing a function returning a `Promise` (Antoine du Hamel) #49609
* (SEMVER-MAJOR) vm: freeze `dependencySpecifiers` array (Antoine du Hamel) #49720

PR-URL: #49870
Co-authored-by: Michaël Zasso <[email protected]>
RafaelGSS added a commit that referenced this pull request Oct 17, 2023
@RafaelGSS @targos
2023-10-17, Version 21.0.0 (Current)
ed16a46
Notable Changes:

doc:
  * promote fetch/webstreams from experimental to stable (Steven) #45684
esm:
  * use import attributes instead of import assertions (Antoine du Hamel) #50140
  * --experimental-default-type flag to flip module defaults (Geoffrey Booth) #49869
  * remove `globalPreload` hook (superseded by `initialize`) (Jacob Smith) #49144
fs:
  * add flush option to writeFile() functions (Colin Ihrig) #50009
  * (SEMVER-MAJOR) add globSync implementation (Moshe Atlow) #47653
http:
  * (SEMVER-MAJOR) reduce parts in chunked response when corking (Robert Nagy) #50167
lib:
  * (SEMVER-MINOR) add WebSocket client (Matthew Aitken) #49830
  * (SEMVER-MAJOR) add `navigator.hardwareConcurrency` (Yagiz Nizipli) #47769
stream:
  * optimize Writable (Robert Nagy) #50012
test_runner:
  * (SEMVER-MAJOR) support passing globs (Moshe Atlow) #47653
vm:
  * use default HDO when importModuleDynamically is not set (Joyee Cheung) #49950

Semver-Major Commits:

* (SEMVER-MAJOR) build: drop support for Visual Studio 2019 (Michaël Zasso) #49051
* (SEMVER-MAJOR) build: bump supported macOS and Xcode versions (Michaël Zasso) #49164
* (SEMVER-MAJOR) crypto: do not overwrite \_writableState.defaultEncoding (Tobias Nießen) #49140
* (SEMVER-MAJOR) deps: bump minimum ICU version to 73 (Michaël Zasso) #49639
* (SEMVER-MAJOR) deps: update V8 to 11.8.172.13 (Michaël Zasso) #49639
* (SEMVER-MAJOR) deps: update llhttp to 9.1.2 (Paolo Insogna) #48981
* (SEMVER-MAJOR) events: validate options of `on` and `once` (Deokjin Kim) #46018
* (SEMVER-MAJOR) fs: adjust `position` validation in reading methods (Livia Medeiros) #42835
* (SEMVER-MAJOR) fs: add globSync implementation (Moshe Atlow) #47653
* (SEMVER-MAJOR) http: reduce parts in chunked response when corking (Robert Nagy) #50167
* (SEMVER-MAJOR) lib: mark URL/URLSearchParams as uncloneable and untransferable (Chengzhong Wu) #47497
* (SEMVER-MAJOR) lib: remove aix directory case for package reader (Yagiz Nizipli) #48605
* (SEMVER-MAJOR) lib: add `navigator.hardwareConcurrency` (Yagiz Nizipli) #47769
* (SEMVER-MAJOR) lib: runtime deprecate punycode (Yagiz Nizipli) #47202
* (SEMVER-MAJOR) module: harmonize error code between ESM and CJS (Antoine du Hamel) #48606
* (SEMVER-MAJOR) net: do not treat `server.maxConnections=0` as `Infinity` (ignoramous) #48276
* (SEMVER-MAJOR) net: only defer \_final call when connecting (Jason Zhang) #47385
* (SEMVER-MAJOR) node-api: rename internal NAPI\_VERSION definition (Chengzhong Wu) #48501
* (SEMVER-MAJOR) src: update NODE\_MODULE\_VERSION to 120 (Michaël Zasso) #49639
* (SEMVER-MAJOR) src: throw DOMException on cloning non-serializable objects (Chengzhong Wu) #47839
* (SEMVER-MAJOR) src: throw DataCloneError on transfering untransferable objects (Chengzhong Wu) #47604
* (SEMVER-MAJOR) stream: use private properties for strategies (Yagiz Nizipli) #47218
* (SEMVER-MAJOR) stream: use private properties for encoding (Yagiz Nizipli) #47218
* (SEMVER-MAJOR) stream: use private properties for compression (Yagiz Nizipli) #47218
* (SEMVER-MAJOR) test\_runner: disallow array in `run` options (Raz Luvaton) #49935
* (SEMVER-MAJOR) test\_runner: support passing globs (Moshe Atlow) #47653
* (SEMVER-MAJOR) tls: use `validateNumber` for `options.minDHSize` (Deokjin Kim) #49973
* (SEMVER-MAJOR) tls: use validateFunction for `options.checkServerIdentity` (Deokjin Kim) #49896
* (SEMVER-MAJOR) util: runtime deprecate `promisify`-ing a function returning a `Promise` (Antoine du Hamel) #49609
* (SEMVER-MAJOR) vm: freeze `dependencySpecifiers` array (Antoine du Hamel) #49720

PR-URL: #49870
Co-authored-by: Michaël Zasso <[email protected]>
@conico974 conico974 mentioned this pull request Apr 1, 2025
fix stream not returning data in node 21+ with node wrapper opennextjs/opennextjs-aws#805
Merged
@RafaelGSS RafaelGSS mentioned this pull request Aug 15, 2025
Merge HTTP chunks during chunked encoding nodejs/performance#57
Closed
@davidje13 davidje13 mentioned this pull request Oct 27, 2025
drain event is unreliable when using cork/uncork with ServerResponse #60432
Closed
@robobun robobun mentioned this pull request Oct 7, 2026
node:http: deliver every chunk that a corked OutgoingMessage accepts oven-sh/bun#44676
Open
This was referenced Nov 12, 2026
perf(node): streamed inserts send one chunk per row; write the encoded rows in frames ClickHouse/clickhouse-js#1133
Closed
Uncompressed streaming inserts emit one HTTP chunk per row, inflating the request body ~50% ClickHouse/clickhouse-js#988
Open
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

@H4ad H4ad H4ad left review comments
@mcollina mcollina mcollina approved these changes
@Qard Qard Qard approved these changes
@anonrig anonrig anonrig approved these changes
@ShogunPanda ShogunPanda Awaiting requested review from ShogunPanda
@aduh95 aduh95 Awaiting requested review from aduh95

Uh oh!

There was an error while loading. Please reload this page.

Assignees

No one assigned

Labels

author ready PRs with CI started, the required approvals, and no outstanding review comments. commit-queue-squash PRs the Commit Queue should land as one squashed commit. http Issues and PRs related to the http subsystem. needs-benchmark-ci PRs that need a benchmark CI run. needs-ci PRs that need a full CI run. notable-change PRs with changes that should be highlighted in changelogs. review wanted PRs that need review. semver-major PRs that contain breaking changes and should be released in the next major version.

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Uh oh!

There was an error while loading. Please reload this page.

8 participants

@ronag @nodejs-github-bot @mcollina @RafaelGSS @rluvaton @Qard @anonrig @H4ad
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.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.