Skip to content

Commit

Permalink
doc: hide undocumented object artifacts in async_hooks
Browse files Browse the repository at this point in the history
The examples show `process.stdout.fd` as a means to use synchronous
writes in async_hooks context. However this is an undocumented field,
so showcase a file write example instead.

Fixes: nodejs#22873

PR-URL: nodejs#24741
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: Vse Mozhet Byt <vsemozhetbyt@gmail.com>
  • Loading branch information
gireeshpunathil authored and Trott committed Dec 4, 2018
1 parent edcb950 commit 9159fb7
Showing 1 changed file with 10 additions and 7 deletions.
17 changes: 10 additions & 7 deletions doc/api/async_hooks.md
Expand Up @@ -150,17 +150,17 @@ Because printing to the console is an asynchronous operation, `console.log()`
will cause the AsyncHooks callbacks to be called. Using `console.log()` or
similar asynchronous operations inside an AsyncHooks callback function will thus
cause an infinite recursion. An easy solution to this when debugging is to use a
synchronous logging operation such as `fs.writeSync(process.stdout.fd, msg)`.
This will print to stdout and will not invoke AsyncHooks recursively because it
is synchronous.
synchronous logging operation such as `fs.writeFileSync(file, msg, flag)`.
This will print to the file and will not invoke AsyncHooks recursively because
it is synchronous.

```js
const fs = require('fs');
const util = require('util');

function debug(...args) {
// use a function like this one when debugging inside an AsyncHooks callback
fs.writeSync(process.stdout.fd, `${util.format(...args)}\n`);
fs.writeFileSync('log.out', `${util.format(...args)}\n`, { flag: 'a' });
}
```

Expand Down Expand Up @@ -329,17 +329,20 @@ async_hooks.createHook({
},
before(asyncId) {
const indentStr = ' '.repeat(indent);
fs.writeSync(process.stdout.fd, `${indentStr}before: ${asyncId}\n`);
fs.writeFileSync('log.out',
`${indentStr}before: ${asyncId}\n`, { flag: 'a' });
indent += 2;
},
after(asyncId) {
indent -= 2;
const indentStr = ' '.repeat(indent);
fs.writeSync(process.stdout.fd, `${indentStr}after: ${asyncId}\n`);
fs.writeFileSync('log.out',
`${indentStr}after: ${asyncId}\n`, { flag: 'a' });
},
destroy(asyncId) {
const indentStr = ' '.repeat(indent);
fs.writeSync(process.stdout.fd, `${indentStr}destroy: ${asyncId}\n`);
fs.writeFileSync('log.out',
`${indentStr}destroy: ${asyncId}\n`, { flag: 'a' });
},
}).enable();

Expand Down

0 comments on commit 9159fb7

Please sign in to comment.