summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/internal/bootstrap/node.js7
-rw-r--r--lib/internal/bootstrap/pre_execution.js26
-rw-r--r--lib/internal/process/per_thread.js17
-rw-r--r--src/node_trace_events.cc10
4 files changed, 27 insertions, 33 deletions
diff --git a/lib/internal/bootstrap/node.js b/lib/internal/bootstrap/node.js
index 9a9cb5aae9..d562298e23 100644
--- a/lib/internal/bootstrap/node.js
+++ b/lib/internal/bootstrap/node.js
@@ -197,6 +197,13 @@ if (!config.noBrowserGlobals) {
defineOperation(global, 'setImmediate', timers.setImmediate);
}
+// Set the per-Environment callback that will be called
+// when the TrackingTraceStateObserver updates trace state.
+// Note that when NODE_USE_V8_PLATFORM is true, the observer is
+// attached to the per-process TracingController.
+const { setTraceCategoryStateUpdateHandler } = internalBinding('trace_events');
+setTraceCategoryStateUpdateHandler(perThreadSetup.toggleTraceCategoryState);
+
// process.allowedNodeEnvironmentFlags
Object.defineProperty(process, 'allowedNodeEnvironmentFlags', {
get() {
diff --git a/lib/internal/bootstrap/pre_execution.js b/lib/internal/bootstrap/pre_execution.js
index 04083b53a2..c38822bd89 100644
--- a/lib/internal/bootstrap/pre_execution.js
+++ b/lib/internal/bootstrap/pre_execution.js
@@ -1,9 +1,6 @@
'use strict';
const { getOptionValue } = require('internal/options');
-// Lazy load internal/trace_events_async_hooks only if the async_hooks
-// trace event category is enabled.
-let traceEventsAsyncHook;
function prepareMainThreadExecution() {
// Patch the process object with legacy properties and normalizations
@@ -162,26 +159,9 @@ function initializeReportSignalHandlers() {
}
function setupTraceCategoryState() {
- const {
- asyncHooksEnabledInitial,
- setTraceCategoryStateUpdateHandler
- } = internalBinding('trace_events');
-
- toggleTraceCategoryState(asyncHooksEnabledInitial);
- setTraceCategoryStateUpdateHandler(toggleTraceCategoryState);
-}
-
-// Dynamically enable/disable the traceEventsAsyncHook
-function toggleTraceCategoryState(asyncHooksEnabled) {
- if (asyncHooksEnabled) {
- if (!traceEventsAsyncHook) {
- traceEventsAsyncHook =
- require('internal/trace_events_async_hooks').createHook();
- }
- traceEventsAsyncHook.enable();
- } else if (traceEventsAsyncHook) {
- traceEventsAsyncHook.disable();
- }
+ const { isTraceCategoryEnabled } = internalBinding('trace_events');
+ const { toggleTraceCategoryState } = require('internal/process/per_thread');
+ toggleTraceCategoryState(isTraceCategoryEnabled('node.async_hooks'));
}
// In general deprecations are intialized wherever the APIs are implemented,
diff --git a/lib/internal/process/per_thread.js b/lib/internal/process/per_thread.js
index a0d6b32596..7a3bee3098 100644
--- a/lib/internal/process/per_thread.js
+++ b/lib/internal/process/per_thread.js
@@ -304,7 +304,24 @@ function buildAllowedFlags() {
));
}
+// Lazy load internal/trace_events_async_hooks only if the async_hooks
+// trace event category is enabled.
+let traceEventsAsyncHook;
+// Dynamically enable/disable the traceEventsAsyncHook
+function toggleTraceCategoryState(asyncHooksEnabled) {
+ if (asyncHooksEnabled) {
+ if (!traceEventsAsyncHook) {
+ traceEventsAsyncHook =
+ require('internal/trace_events_async_hooks').createHook();
+ }
+ traceEventsAsyncHook.enable();
+ } else if (traceEventsAsyncHook) {
+ traceEventsAsyncHook.disable();
+ }
+}
+
module.exports = {
+ toggleTraceCategoryState,
assert,
buildAllowedFlags,
wrapProcessMethods
diff --git a/src/node_trace_events.cc b/src/node_trace_events.cc
index 5e30df41c4..1fad37743f 100644
--- a/src/node_trace_events.cc
+++ b/src/node_trace_events.cc
@@ -11,7 +11,6 @@
namespace node {
using v8::Array;
-using v8::Boolean;
using v8::Context;
using v8::Function;
using v8::FunctionCallbackInfo;
@@ -149,15 +148,6 @@ void NodeCategorySet::Initialize(Local<Object> target,
.FromJust();
target->Set(context, trace,
binding->Get(context, trace).ToLocalChecked()).FromJust();
-
- // Initial value of async hook trace events
- bool async_hooks_enabled = (*(TRACE_EVENT_API_GET_CATEGORY_GROUP_ENABLED(
- TRACING_CATEGORY_NODE1(async_hooks)))) != 0;
- target
- ->Set(context,
- FIXED_ONE_BYTE_STRING(env->isolate(), "asyncHooksEnabledInitial"),
- Boolean::New(env->isolate(), async_hooks_enabled))
- .FromJust();
}
} // namespace node