[8.x] Backport 18513, 18694 by ofrobots · Pull Request #19517 · nodejs/node
ofrobots
added
the
semver-minor
label
The emit{Before,After} APIs in AsyncResource are problematic.
* emit{Before,After} are named to suggest that the only thing they do
is emit the before and after hooks. However, they in fact, mutate
the current execution context.
* They must be properly nested. Failure to do so by user code leads
to catastrophic (unrecoverable) exceptions. It is very easy for the
users to forget that they must be using a try/finally block around
the code that must be surrounded by these operations. Even the
example provided in the official docs makes this mistake. Failing
to use a finally can lead to a catastrophic crash if the callback
ends up throwing.
This change provides a safer `runInAsyncScope` API as an alternative
and deprecates emit{Before,After}.
Backport-PR-URL: nodejs#19517
PR-URL: nodejs#18513
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Andreas Madsen <amwebdk@gmail.com>
Refs: nodejs#18513 Backport-PR-URL: nodejs#19517 PR-URL: nodejs#18694 Refs: nodejs#18513 Reviewed-By: Ali Ijaz Sheikh <ofrobots@google.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
As part of the backport to 8.x, this change removes the runtime deprecation making this a docs-only deprecation for 8.x. PR-URL: nodejs#19517 Reviewed-By: mcollina - Matteo Collina <matteo.collina@gmail.com>
rvagg pushed a commit that referenced this pull request
The emit{Before,After} APIs in AsyncResource are problematic.
* emit{Before,After} are named to suggest that the only thing they do
is emit the before and after hooks. However, they in fact, mutate
the current execution context.
* They must be properly nested. Failure to do so by user code leads
to catastrophic (unrecoverable) exceptions. It is very easy for the
users to forget that they must be using a try/finally block around
the code that must be surrounded by these operations. Even the
example provided in the official docs makes this mistake. Failing
to use a finally can lead to a catastrophic crash if the callback
ends up throwing.
This change provides a safer `runInAsyncScope` API as an alternative
and deprecates emit{Before,After}.
Backport-PR-URL: #19517
PR-URL: #18513
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Andreas Madsen <amwebdk@gmail.com>
rvagg pushed a commit that referenced this pull request
rvagg pushed a commit that referenced this pull request
As part of the backport to 8.x, this change removes the runtime deprecation making this a docs-only deprecation for 8.x. PR-URL: #19517 Reviewed-By: mcollina - Matteo Collina <matteo.collina@gmail.com>
MylesBorins added a commit that referenced this pull request
Notable Changes:
* async_hooks:
- rename PromiseWrap.parentId (Ali Ijaz Sheikh)
#18633
- remove runtime deprecation (Ali Ijaz Sheikh)
#19517
- deprecate unsafe emit{Before,After} (Ali Ijaz Sheikh)
#18513
* cluster:
- add cwd to cluster.settings (cjihrig)
#18399
- support windowsHide option for workers (Todd Wong)
#17412
* crypto:
- allow passing null as IV unless required (Tobias Nießen)
#18644
* deps:
- upgrade npm to 6.2.0 (Kat Marchán)
#21592
- upgrade libuv to 1.19.2 (cjihrig)
#18918
- Upgrade node-inspect to 1.11.5 (Jan Krems)
#21055
* fs,net:
- support as and as+ flags in stringToFlags() (Sarat Addepalli)
#18801
- emit 'ready' for fs streams and sockets (Sameer Srivastava)
#19408
* http, http2:
- add options to http.createServer() (Peter Marton)
#15752
- add 103 Early Hints status code (Yosuke Furukawa)
#16644
- add http fallback options to .createServer (Peter Marton)
#15752
* n-api:
- take n-api out of experimental (Michael Dawson)
#19262
* perf_hooks:
- add warning when too many entries in the timeline (James M Snell)
#18087
* src:
- add public API for managing NodePlatform (Cheng Zhao)
#16981
- allow --perf-(basic-)?prof in NODE\_OPTIONS (Leko)
#17600
- node internals' postmortem metadata (Matheus Marchini)
#14901
* tls:
- expose Finished messages in TLSSocket (Anton Salikhmetov)
#19102
* **trace_events**:
- add file pattern cli option (Andreas Madsen)
#18480
* util:
- implement util.getSystemErrorName() (Joyee Cheung)
#18186
PR-URL: #21593
BethGriggs pushed a commit to BethGriggs/node that referenced this pull request
Notable Changes:
* async_hooks:
- rename PromiseWrap.parentId (Ali Ijaz Sheikh)
nodejs#18633
- remove runtime deprecation (Ali Ijaz Sheikh)
nodejs#19517
- deprecate unsafe emit{Before,After} (Ali Ijaz Sheikh)
nodejs#18513
* cluster:
- add cwd to cluster.settings (cjihrig)
nodejs#18399
- support windowsHide option for workers (Todd Wong)
nodejs#17412
* crypto:
- allow passing null as IV unless required (Tobias Nießen)
nodejs#18644
* deps:
- upgrade npm to 6.2.0 (Kat Marchán)
nodejs#21592
- upgrade libuv to 1.19.2 (cjihrig)
nodejs#18918
- Upgrade node-inspect to 1.11.5 (Jan Krems)
nodejs#21055
* fs,net:
- support as and as+ flags in stringToFlags() (Sarat Addepalli)
nodejs#18801
- emit 'ready' for fs streams and sockets (Sameer Srivastava)
nodejs#19408
* http, http2:
- add options to http.createServer() (Peter Marton)
nodejs#15752
- add 103 Early Hints status code (Yosuke Furukawa)
nodejs#16644
- add http fallback options to .createServer (Peter Marton)
nodejs#15752
* n-api:
- take n-api out of experimental (Michael Dawson)
nodejs#19262
* perf_hooks:
- add warning when too many entries in the timeline (James M Snell)
nodejs#18087
* src:
- add public API for managing NodePlatform (Cheng Zhao)
nodejs#16981
- allow --perf-(basic-)?prof in NODE\_OPTIONS (Leko)
nodejs#17600
- node internals' postmortem metadata (Matheus Marchini)
nodejs#14901
* tls:
- expose Finished messages in TLSSocket (Anton Salikhmetov)
nodejs#19102
* **trace_events**:
- add file pattern cli option (Andreas Madsen)
nodejs#18480
* util:
- implement util.getSystemErrorName() (Joyee Cheung)
nodejs#18186
PR-URL: nodejs#21593
MylesBorins added a commit that referenced this pull request
Notable Changes:
* async_hooks:
- rename PromiseWrap.parentId (Ali Ijaz Sheikh)
#18633
- remove runtime deprecation (Ali Ijaz Sheikh)
#19517
- deprecate unsafe emit{Before,After} (Ali Ijaz Sheikh)
#18513
* cluster:
- add cwd to cluster.settings (cjihrig)
#18399
- support windowsHide option for workers (Todd Wong)
#17412
* crypto:
- allow passing null as IV unless required (Tobias Nießen)
#18644
* deps:
- upgrade npm to 6.4.1 (Kat Marchán)
#22591
- upgrade libuv to 1.19.2 (cjihrig)
#18918
- Upgrade node-inspect to 1.11.5 (Jan Krems)
#21055
* fs,net:
- support as and as+ flags in stringToFlags() (Sarat Addepalli)
#18801
- emit 'ready' for fs streams and sockets (Sameer Srivastava)
#19408
* http, http2:
- add options to http.createServer() (Peter Marton)
#15752
- add 103 Early Hints status code (Yosuke Furukawa)
#16644
- add http fallback options to .createServer (Peter Marton)
#15752
* n-api:
- take n-api out of experimental (Michael Dawson)
#19262
* perf_hooks:
- add warning when too many entries in the timeline (James M Snell)
#18087
* src:
- add public API for managing NodePlatform (Cheng Zhao)
#16981
- allow --perf-(basic-)?prof in NODE\_OPTIONS (Leko)
#17600
- node internals' postmortem metadata (Matheus Marchini)
#14901
* tls:
- expose Finished messages in TLSSocket (Anton Salikhmetov)
#19102
* **trace_events**:
- add file pattern cli option (Andreas Madsen)
#18480
* util:
- implement util.getSystemErrorName() (Joyee Cheung)
#18186
PR-URL: #21593
MylesBorins added a commit that referenced this pull request
Notable Changes:
* async_hooks:
- rename PromiseWrap.parentId (Ali Ijaz Sheikh)
#18633
- remove runtime deprecation (Ali Ijaz Sheikh)
#19517
- deprecate unsafe emit{Before,After} (Ali Ijaz Sheikh)
#18513
* cluster:
- add cwd to cluster.settings (cjihrig)
#18399
- support windowsHide option for workers (Todd Wong)
#17412
* crypto:
- allow passing null as IV unless required (Tobias Nießen)
#18644
* deps:
- upgrade npm to 6.2.0 (Kat Marchán)
#21592
- upgrade libuv to 1.19.2 (cjihrig)
#18918
- Upgrade node-inspect to 1.11.5 (Jan Krems)
#21055
* fs,net:
- support as and as+ flags in stringToFlags() (Sarat Addepalli)
#18801
- emit 'ready' for fs streams and sockets (Sameer Srivastava)
#19408
* http, http2:
- add options to http.createServer() (Peter Marton)
#15752
- add 103 Early Hints status code (Yosuke Furukawa)
#16644
- add http fallback options to .createServer (Peter Marton)
#15752
* n-api:
- take n-api out of experimental (Michael Dawson)
#19262
* perf_hooks:
- add warning when too many entries in the timeline (James M Snell)
#18087
* src:
- add public API for managing NodePlatform (Cheng Zhao)
#16981
- allow --perf-(basic-)?prof in NODE\_OPTIONS (Leko)
#17600
- node internals' postmortem metadata (Matheus Marchini)
#14901
* tls:
- expose Finished messages in TLSSocket (Anton Salikhmetov)
#19102
* **trace_events**:
- add file pattern cli option (Andreas Madsen)
#18480
* util:
- implement util.getSystemErrorName() (Joyee Cheung)
#18186
PR-URL: #21593
MylesBorins added a commit that referenced this pull request
Notable Changes:
* async_hooks:
- rename PromiseWrap.parentId (Ali Ijaz Sheikh)
#18633
- remove runtime deprecation (Ali Ijaz Sheikh)
#19517
- deprecate unsafe emit{Before,After} (Ali Ijaz Sheikh)
#18513
* cluster:
- add cwd to cluster.settings (cjihrig)
#18399
- support windowsHide option for workers (Todd Wong)
#17412
* crypto:
- allow passing null as IV unless required (Tobias Nießen)
#18644
* deps:
- upgrade npm to 6.2.0 (Kat Marchán)
#21592
- upgrade libuv to 1.19.2 (cjihrig)
#18918
- Upgrade node-inspect to 1.11.5 (Jan Krems)
#21055
* fs,net:
- support as and as+ flags in stringToFlags() (Sarat Addepalli)
#18801
- emit 'ready' for fs streams and sockets (Sameer Srivastava)
#19408
* http, http2:
- add options to http.createServer() (Peter Marton)
#15752
- add 103 Early Hints status code (Yosuke Furukawa)
#16644
- add http fallback options to .createServer (Peter Marton)
#15752
* n-api:
- take n-api out of experimental (Michael Dawson)
#19262
* perf_hooks:
- add warning when too many entries in the timeline (James M Snell)
#18087
* src:
- add public API for managing NodePlatform (Cheng Zhao)
#16981
- allow --perf-(basic-)?prof in NODE\_OPTIONS (Leko)
#17600
- node internals' postmortem metadata (Matheus Marchini)
#14901
* tls:
- expose Finished messages in TLSSocket (Anton Salikhmetov)
#19102
* **trace_events**:
- add file pattern cli option (Andreas Madsen)
#18480
* util:
- implement util.getSystemErrorName() (Joyee Cheung)
#18186
PR-URL: #21593
MylesBorins added a commit that referenced this pull request
Notable Changes:
* async_hooks:
- rename PromiseWrap.parentId (Ali Ijaz Sheikh)
#18633
- remove runtime deprecation (Ali Ijaz Sheikh)
#19517
- deprecate unsafe emit{Before,After} (Ali Ijaz Sheikh)
#18513
* cluster:
- add cwd to cluster.settings (cjihrig)
#18399
- support windowsHide option for workers (Todd Wong)
#17412
* crypto:
- allow passing null as IV unless required (Tobias Nießen)
#18644
* deps:
- upgrade npm to 6.2.0 (Kat Marchán)
#21592
- upgrade libuv to 1.19.2 (cjihrig)
#18918
- Upgrade node-inspect to 1.11.5 (Jan Krems)
#21055
* fs,net:
- support as and as+ flags in stringToFlags() (Sarat Addepalli)
#18801
- emit 'ready' for fs streams and sockets (Sameer Srivastava)
#19408
* http, http2:
- add options to http.createServer() (Peter Marton)
#15752
- add 103 Early Hints status code (Yosuke Furukawa)
#16644
- add http fallback options to .createServer (Peter Marton)
#15752
* n-api:
- take n-api out of experimental (Michael Dawson)
#19262
* perf_hooks:
- add warning when too many entries in the timeline (James M Snell)
#18087
* src:
- add public API for managing NodePlatform (Cheng Zhao)
#16981
- allow --perf-(basic-)?prof in NODE\_OPTIONS (Leko)
#17600
- node internals' postmortem metadata (Matheus Marchini)
#14901
* tls:
- expose Finished messages in TLSSocket (Anton Salikhmetov)
#19102
* **trace_events**:
- add file pattern cli option (Andreas Madsen)
#18480
* util:
- implement util.getSystemErrorName() (Joyee Cheung)
#18186
PR-URL: #21593
Trott
mentioned this pull request
3 tasks