From 7af352c60cf04eefb951f4f70ea227ce2d3de3bd Mon Sep 17 00:00:00 2001 From: Darshan Sen Date: Sat, 24 Apr 2021 20:16:42 +0530 Subject: [PATCH] async_hooks,doc: replace process.stdout.fd with 1 This stops "RangeError: Maximum call stack size exceeded". PR-URL: https://github.com/nodejs/node/pull/38382 Reviewed-By: Antoine du Hamel Reviewed-By: James M Snell --- doc/api/async_hooks.md | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/doc/api/async_hooks.md b/doc/api/async_hooks.md index b990ffe34720b4..c2028f02a40d78 100644 --- a/doc/api/async_hooks.md +++ b/doc/api/async_hooks.md @@ -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`: @@ -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());