Skip to content

Commit

Permalink
async_hooks,doc: replace process.stdout.fd with 1
Browse files Browse the repository at this point in the history
This stops "RangeError: Maximum call stack size exceeded".

PR-URL: #38382
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
  • Loading branch information
RaisinTen authored and targos committed Jun 11, 2021
1 parent a9f7aee commit 5f3e96b
Showing 1 changed file with 11 additions and 7 deletions.
18 changes: 11 additions & 7 deletions doc/api/async_hooks.md
Expand Up @@ -271,16 +271,18 @@ created, while `triggerAsyncId` shows *why* a resource was created.
The following is a simple demonstration of `triggerAsyncId`:

```js
const { fd } = process.stdout;

async_hooks.createHook({
init(asyncId, type, triggerAsyncId) {
const eid = async_hooks.executionAsyncId();
fs.writeSync(
process.stdout.fd,
fd,
`${type}(${asyncId}): trigger: ${triggerAsyncId} execution: ${eid}\n`);
}
}).enable();

require('net').createServer((conn) => {}).listen(8080);
net.createServer((conn) => {}).listen(8080);
```

Output when hitting the server with `nc localhost 8080`:
Expand Down Expand Up @@ -322,33 +324,35 @@ callback to `listen()` will look like. The output formatting is slightly more
elaborate to make calling context easier to see.

```js
const { fd } = process.stdout;

let indent = 0;
async_hooks.createHook({
init(asyncId, type, triggerAsyncId) {
const eid = async_hooks.executionAsyncId();
const indentStr = ' '.repeat(indent);
fs.writeSync(
process.stdout.fd,
fd,
`${indentStr}${type}(${asyncId}):` +
` trigger: ${triggerAsyncId} execution: ${eid}\n`);
},
before(asyncId) {
const indentStr = ' '.repeat(indent);
fs.writeSync(process.stdout.fd, `${indentStr}before: ${asyncId}\n`);
fs.writeSync(fd, `${indentStr}before: ${asyncId}\n`);
indent += 2;
},
after(asyncId) {
indent -= 2;
const indentStr = ' '.repeat(indent);
fs.writeSync(process.stdout.fd, `${indentStr}after: ${asyncId}\n`);
fs.writeSync(fd, `${indentStr}after: ${asyncId}\n`);
},
destroy(asyncId) {
const indentStr = ' '.repeat(indent);
fs.writeSync(process.stdout.fd, `${indentStr}destroy: ${asyncId}\n`);
fs.writeSync(fd, `${indentStr}destroy: ${asyncId}\n`);
},
}).enable();

require('net').createServer(() => {}).listen(8080, () => {
net.createServer(() => {}).listen(8080, () => {
// Let's wait 10ms before logging the server started.
setTimeout(() => {
console.log('>>>', async_hooks.executionAsyncId());
Expand Down

0 comments on commit 5f3e96b

Please sign in to comment.