Permalink
Browse files

async_hooks: only set up hooks if used

PR-URL: #13177
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Andreas Madsen <amwebdk@gmail.com>
Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
  • Loading branch information...
addaleax authored and jasnell committed May 21, 2017
1 parent 287b11d commit e554bb449e1bb58058c074c94c8a5c2b84be0539
Showing with 11 additions and 6 deletions.
  1. +11 −6 lib/async_hooks.js
View
@@ -49,12 +49,7 @@ const before_symbol = Symbol('before');
const after_symbol = Symbol('after');
const destroy_symbol = Symbol('destroy');
// Setup the callbacks that node::AsyncWrap will call when there are hooks to
// process. They use the same functions as the JS embedder API.
async_wrap.setupHooks({ init,
before: emitBeforeN,
after: emitAfterN,
destroy: emitDestroyN });
let setupHooksCalled = false;
// Used to fatally abort the process if a callback throws.
function fatalError(e) {
@@ -103,6 +98,16 @@ class AsyncHook {
if (hooks_array.includes(this))
return;
if (!setupHooksCalled) {
setupHooksCalled = true;
// Setup the callbacks that node::AsyncWrap will call when there are
// hooks to process. They use the same functions as the JS embedder API.
async_wrap.setupHooks({ init,
before: emitBeforeN,
after: emitAfterN,
destroy: emitDestroyN });
}
// createHook() has already enforced that the callbacks are all functions,
// so here simply increment the count of whether each callbacks exists or
// not.

0 comments on commit e554bb4

Please sign in to comment.