| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
Sorry, something went wrong.
This reverts commit 037ac99. As flaky CI failures have revealed, this feature was implemented incorrectly. `stop_sub_worker_contexts()` needs to be called on the thread on which the `Environment` is currently running, it’s not thread-safe. The current API requires `Stop()` to be thread-safe, though. We could add a new API for this, but unless there’s demand, that’s probably not necessary as `FreeEnvironment()` will also stop Workers, which is commonly the next action on an `Environment` instance after having `Stop()` called on it. Refs: #32531 PR-URL: #32623 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Gireesh Punathil <gpunathi@in.ibm.com>
The legacy HTTP parser, used by default in versions of Node.js prior to 12.0.0, is deprecated. The legacy HTTP parser cannot be guaranteed to be supported after April 2021. This commit introduces a deprecation warning for the legacy HTTP parser. PR-URL: #37603 Refs: #31441 Reviewed-By: Richard Lau <rlau@redhat.com> Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com> Reviewed-By: Michaël Zasso <targos@protonmail.com>
Original commit message: ``` cpu-profiler: Use Handle version of SourcePositionTableIterator The surrounding code can trigger an allocation through InliningStack which can eventually end up allocating a line ends array. This is fine as-is because the existing iterator code makes a copy of the byte array. It just triggers the no_gc dcheck in debug mode. Fixed: v8:10778 Change-Id: Ic8c502767ec6c3d3b1f5e84df60638bd2fc6be75 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2339102 Auto-Submit: Peter Marshall <petermarshall@chromium.org> Commit-Queue: Tobias Tebbi <tebbi@chromium.org> Reviewed-by: Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#69247} ``` Refs: v8/v8@beebee4 PR-URL: #37293 Backport-PR-URL: #37578 Reviewed-By: Jiawen Geng <technicalcute@gmail.com> Reviewed-By: Juan José Arboleda <soyjuanarbol@gmail.com> Reviewed-By: Richard Lau <rlau@redhat.com>
This test is added as it usually crashes without applying the v8 patch: v8/v8@beebee4 PR-URL: #37293 Backport-PR-URL: #37578 Refs: v8/v8@beebee4 Reviewed-By: Jiawen Geng <technicalcute@gmail.com> Reviewed-By: Juan José Arboleda <soyjuanarbol@gmail.com> Reviewed-By: Richard Lau <rlau@redhat.com>
Allow calling eventLoopUtilization() directly on a worker thread:
const worker = new Worker('./foo.js');
const elu = worker.performance.eventLoopUtilization();
setTimeout(() => {
worker.performance.eventLoopUtilization(elu);
}, 10);
Add a new performance object on the Worker instance that will hopefully
one day hold all the other performance metrics, such as nodeTiming.
Include benchmarks and tests.
PR-URL: #35664
Reviewed-By: Juan José Arboleda <soyjuanarbol@gmail.com>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Gerhard Stöbich <deb2001-github@yahoo.de>
Reviewed-By: James M Snell <jasnell@gmail.com>
Backport-PR-URL: #37165
The active worker check compared the time from sending message till response arrived from worker with the complete time the worker was running till it responses to the spin request. If sending back the message is slow for some reason the test fails. Adapt the test to compare the time seen inside the worker with the time read from main thread. PR-URL: #35891 Fixes: #35844 Refs: #35886 Refs: #35664 Reviewed-By: Gireesh Punathil <gpunathi@in.ibm.com> Reviewed-By: Rich Trott <rtrott@gmail.com> Backport-PR-URL: #37165
Add an v8.takeCoverage() API that allows the user to write the coverage started by NODE_V8_COVERAGE to disk on demand. The coverage can be written multiple times during the lifetime of the process, each time the execution counter will be reset. When the process is about to exit, one last coverage will still be written to disk. Also refactors the internal profiler connection code so that we use the inspector response id to identify the profile response instead of using an ad-hoc flag in C++. PR-URL: #33807 Backport-PR-URL: #36352 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: Jiawen Geng <technicalcute@gmail.com> Reviewed-By: Ben Coe <bencoe@gmail.com>
Add a v8.stopCoverage() API to stop the coverage collection started by NODE_V8_COVERAGE - this would be useful in conjunction with v8.takeCoverage() if the user don't want to emit the coverage at the process exit but still want to collect it on demand at some point. PR-URL: #33807 Backport-PR-URL: #36352 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: Jiawen Geng <technicalcute@gmail.com> Reviewed-By: Ben Coe <bencoe@gmail.com>
Unlike JS-only modules, native add-ons are always associated with a dynamic shared object from which they are loaded. Being able to retrieve its absolute path is important to native-only add-ons, i.e. add-ons that are not themselves being loaded from a JS-only module located in the same package as the native add-on itself. Currently, the file name is obtained at environment construction time from the JS `module.filename`. Nevertheless, the presence of `module` is not required, because the file name could also be passed in via a private property added onto `exports` from the `process.dlopen` binding. As an attempt at future-proofing, the file name is provided as a URL, i.e. prefixed with the `file://` protocol. Fixes: nodejs/node-addon-api#449 PR-URL: #37195 Backport-PR-URL: #37328 Co-authored-by: Michael Dawson <mdawson@devrus.com> Reviewed-By: Michael Dawson <midawson@redhat.com>
PR-URL: #35781 Backport-PR-URL: #37718 Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com> Reviewed-By: Rich Trott <rtrott@gmail.com> Reviewed-By: Michaël Zasso <targos@protonmail.com> Reviewed-By: Franziska Hinkelmann <franziska.hinkelmann@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Myles Borins <myles.borins@gmail.com> Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com> Reviewed-By: Derek Lewis <DerekNonGeneric@inf.is>
PR-URL: #37712 Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com> Reviewed-By: Myles Borins <myles.borins@gmail.com> Reviewed-By: Bradley Farias <bradley.meck@gmail.com> Reviewed-By: Geoffrey Booth <webmaster@geoffreybooth.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Rich Trott <rtrott@gmail.com> Reviewed-By: Michaël Zasso <targos@protonmail.com>
Notable changes The legacy HTTP parser is runtime deprecated: - The legacy HTTP parser, selected by the `--http-parser=legacy` command line option, is deprecated with the pending End-of-Life of Node.js 10.x (where it is the only HTTP parser implementation provided) at the end of April 2021. It will now warn on use but otherwise continue to function and may be removed in a future Node.js 12.x release. - The default HTTP parser based on llhttp is not affected. By default it is stricter than the now deprecated legacy HTTP parser. If interoperability with HTTP implementations that send invalid HTTP headers is required, the HTTP parser can be started in a less secure mode with the `--insecure-http-parser` command line option. ES Modules: - ES Modules are now considered stable. node-api: - Added an experimental API to allow retrieval of the add-on file name. New API's to control code coverage data collection: - `v8.stopCoverage()` and `v8.takeCoverage()` have been added. New API to monitor event loop utilization by Worker threads - `worker.performance.eventLoopUtilization()` has been added. PR-URL: #37797
|
@nodejs/releasers I'm aiming to get this out on the 30 March 2021. That gives us a month before Node.js 10.x goes End-of-Life (see the notable changes about the legacy HTTP parser deprecation). Since this is a semver-minor I've pulled in #37712 which has just gone out in Node.js 15.12.0 but will have been out for just less than two weeks by 30 March 2021. I am planning on also including #37796 (need to wait for CI's to complete/pass). Any suggestions for improvements to the notable changes section welcome. |
Sorry, something went wrong.
Notable changes The legacy HTTP parser is runtime deprecated: - The legacy HTTP parser, selected by the `--http-parser=legacy` command line option, is deprecated with the pending End-of-Life of Node.js 10.x (where it is the only HTTP parser implementation provided) at the end of April 2021. It will now warn on use but otherwise continue to function and may be removed in a future Node.js 12.x release. - The default HTTP parser based on llhttp is not affected. By default it is stricter than the now deprecated legacy HTTP parser. If interoperability with HTTP implementations that send invalid HTTP headers is required, the HTTP parser can be started in a less secure mode with the `--insecure-http-parser` command line option. ES Modules: - ES Modules are now considered stable. node-api: - Updated to node-api version 8 and added an experimental API to allow retrieval of the add-on file name. New API's to control code coverage data collection: - `v8.stopCoverage()` and `v8.takeCoverage()` have been added. New API to monitor event loop utilization by Worker threads - `worker.performance.eventLoopUtilization()` has been added. PR-URL: #37797
Sorry, something went wrong.
|
undici is failing in CITGM with the current Node.js 12.22.0 proposal across multiple (probably all as not all have completed) platforms: Details not ok 13 - test/client-pipelining.js # time=499.442ms
---
env: {}
file: test/client-pipelining.js
timeout: 60000
command: /data/iojs/build/workspace/citgm-smoker/nodes/rhel7-s390x/smoker/bin/node
args:
- --expose-gc
- test/client-pipelining.js
stdio:
- 0
- pipe
- 2
cwd: /data/iojs/tmp/citgm_tmp/0fb9c5c5-d819-45c6-a028-9ff49a2184da/undici
exitCode: 1
...
{
# Subtest: 20 times GET with pipelining 10
1..61
not ok 1 - (unnamed test)
---
code: DEP0131
...
...
not ok 18 - test/client-write-max-listeners.js # time=55.518ms
---
env: {}
file: test/client-write-max-listeners.js
timeout: 60000
command: /data/iojs/build/workspace/citgm-smoker/nodes/rhel7-s390x/smoker/bin/node
args:
- --expose-gc
- test/client-write-max-listeners.js
stdio:
- 0
- pipe
- 2
cwd: /data/iojs/tmp/citgm_tmp/0fb9c5c5-d819-45c6-a028-9ff49a2184da/undici
exitCode: 1
...
{
# Subtest: socket close listener does not leak
1..32
not ok 1 - (unnamed test)
---
at:
line: 34
column: 7
file: test/client-write-max-listeners.js
type: process
stack: |
process.<anonymous> (test/client-write-max-listeners.js:34:7)
process.emit (node_modules/source-map-support/source-map-support.js:495:21)
process.domainProcessEmit (node_modules/async-hook-domain/index.js:137:26)
source: |2
process.on('warning', () => {
t.fail()
------^
})
...
I can reproduce locally on Fedora 33. It looks like the new warning for the legacy HTTP parser deprecation is being emitted and causing two of the tests to fail. I believe nodejs/undici#564 will fix it as running citgm against the current main branch of undici (node bin/citgm nodejs/undici#main) passes, while node bin/citgm undici and node bin/citgm nodejs/undici#3.x fails. FWIW process.binding('http_parser'), which is what undici 3.3.3 does, will load the legacy http parser in Node.js 12: Lines 33 to 34 in 1b4790b FYI @nodejs/undici |
Sorry, something went wrong.
There was a problem hiding this comment.
lgtm
Sorry, something went wrong.
Sorry, something went wrong.
|
@aduh95 It does not cherry-pick cleanly to v12.x-staging. |
Sorry, something went wrong.
Underscore CITGM failure:
https://github.com/jashkenas/underscore/issues/2915#issuecomment-802789289Error: Failure getting project from npm npm ERR! code E404 npm ERR! 404 Not Found - GET https://codeload.github.com/jashkenas/underscore/tar.gz/bf5a0ed27599f99ea59a0839c5bc2fb27a46c1cf npm ERR! 404 npm ERR! 404 'https://github.com/jashkenas/underscore/archive/bf5a0ed27599f99ea59a0839c5bc2fb27a46c1cf.tar.gz' is not in the npm registry. npm ERR! 404 Your package name is not valid, because npm ERR! 404 1. name can only contain URL-friendly characters npm ERR! 404 npm ERR! 404 Note that you can also install from a npm ERR! 404 tarball, folder, http url, or git url. npm ERR! A complete log of this run can be found in: npm ERR! /home/iojs/tmp/citgm_tmp/a7df1de0-6c8a-4cd9-8f20-b033c89b83da/home/.npm/_logs/2021-03-19T15_05_00_202Z-debug.log looks to be because there's no tag (deliberately at this time) for Underscore 1.12.1 in GitHub: jashkenas/underscore#2915 (comment) |
Sorry, something went wrong.
Add support for loading modules using percent-encoded URLs. PR-URL: #37392 Backport-PR-URL: #37859 Reviewed-By: Michaël Zasso <targos@protonmail.com> Reviewed-By: Bradley Farias <bradley.meck@gmail.com> Reviewed-By: Myles Borins <myles.borins@gmail.com> Reviewed-By: Jan Krems <jan.krems@gmail.com> Reviewed-By: Guy Bedford <guybedford@gmail.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Zijian Liu <lxxyxzj@gmail.com>
|
CI: https://ci.nodejs.org/job/node-test-pull-request/37035/ |
Sorry, something went wrong.
Fix two races in test-performance-eventlooputil resulting in a flaky test. elu1 was capture after start time t from spin look. If OS descides to reschedule the process after capturing t but before getting elu for >=50ms the spin loop is actually a nop. elu1 doesn't show this and as a result elut3 = eventLoopUtilization(elu1) results in elu3.active === 0. Moving capturing of t after capturing t, just before the spin look avoids this. Similar if OS decides to shedule a different process between getting the total elu from start and the diff elu showing the spin loop the check to verify that total active time is long then the spin loop fails. Exchanging these statements avoids this race. PR-URL: #36028 Fixes: #35309 Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com> Reviewed-By: Rich Trott <rtrott@gmail.com>
Notable changes The legacy HTTP parser is runtime deprecated: - The legacy HTTP parser, selected by the `--http-parser=legacy` command line option, is deprecated with the pending End-of-Life of Node.js 10.x (where it is the only HTTP parser implementation provided) at the end of April 2021. It will now warn on use but otherwise continue to function and may be removed in a future Node.js 12.x release. - The default HTTP parser based on llhttp is not affected. By default it is stricter than the now deprecated legacy HTTP parser. If interoperability with HTTP implementations that send invalid HTTP headers is required, the HTTP parser can be started in a less secure mode with the `--insecure-http-parser` command line option. ES Modules: - ES Modules are now considered stable. node-api: - Updated to node-api version 8 and added an experimental API to allow retrieval of the add-on file name. New API's to control code coverage data collection: - `v8.stopCoverage()` and `v8.takeCoverage()` have been added. New API to monitor event loop utilization by Worker threads - `worker.performance.eventLoopUtilization()` has been added. PR-URL: #37797
Sorry, something went wrong.
|
Saw some parallel/test-performance-eventlooputil failures in the CI on macOS. I've cherry-picked #36028, which fixes some race conditions in the test. |
Sorry, something went wrong.
|
CI: https://ci.nodejs.org/job/node-test-pull-request/37037/ ✅ |
Sorry, something went wrong.
|
Release build: https://ci-release.nodejs.org/job/iojs+release/6766/ |
Sorry, something went wrong.
Notable changes The legacy HTTP parser is runtime deprecated: - The legacy HTTP parser, selected by the `--http-parser=legacy` command line option, is deprecated with the pending End-of-Life of Node.js 10.x (where it is the only HTTP parser implementation provided) at the end of April 2021. It will now warn on use but otherwise continue to function and may be removed in a future Node.js 12.x release. - The default HTTP parser based on llhttp is not affected. By default it is stricter than the now deprecated legacy HTTP parser. If interoperability with HTTP implementations that send invalid HTTP headers is required, the HTTP parser can be started in a less secure mode with the `--insecure-http-parser` command line option. ES Modules: - ES Modules are now considered stable. node-api: - Updated to node-api version 8 and added an experimental API to allow retrieval of the add-on file name. New API's to control code coverage data collection: - `v8.stopCoverage()` and `v8.takeCoverage()` have been added. New API to monitor event loop utilization by Worker threads - `worker.performance.eventLoopUtilization()` has been added. PR-URL: #37797
| Back | FazBrowse Home | New Git URL |
2021-03-30, Version 12.22.0 'Erbium' (LTS), @richardlau
Notable changes
The legacy HTTP parser is runtime deprecated
The legacy HTTP parser, selected by the --http-parser=legacy command line
option, is deprecated with the pending End-of-Life of Node.js 10.x (where it
is the only HTTP parser implementation provided) at the end of April 2021. It
will now warn on use but otherwise continue to function and may be removed in
a future Node.js 12.x release.
The default HTTP parser based on llhttp is not affected. By default it is
stricter than the now deprecated legacy HTTP parser. If interoperability with
HTTP implementations that send invalid HTTP headers is required, the HTTP
parser can be started in a less secure mode with the
--insecure-http-parser
command line option.
Contributed by Beth Griggs #37603.
ES Modules
ES Modules are now considered stable.
Contributed by Guy Bedford #35781
node-api
Updated to node-api version 8 and added an experimental API to allow
retrieval of the add-on file name.
Contributed by Gabriel Schulhof #37652 and #37195.
New API's to control code coverage data collection
v8.stopCoverage() and v8.takeCoverage() have been added.
Contributed by Joyee Cheung #33807.
New API to monitor event loop utilization by Worker threads
worker.performance.eventLoopUtilization() has been added.
Contributed by Trevor Norris #35664.
Commits
cc @nodejs/releasers