summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/internal/bootstrap/node.js21
-rw-r--r--lib/internal/bootstrap/pre_execution.js25
-rw-r--r--lib/internal/process/main_thread_only.js1
3 files changed, 25 insertions, 22 deletions
diff --git a/lib/internal/bootstrap/node.js b/lib/internal/bootstrap/node.js
index aa0a6b282e..0dc34be96e 100644
--- a/lib/internal/bootstrap/node.js
+++ b/lib/internal/bootstrap/node.js
@@ -282,36 +282,15 @@ if (process.env.NODE_V8_COVERAGE) {
};
}
-// Worker threads don't receive signals.
-if (isMainThread) {
- const {
- isSignal,
- startListeningIfSignal,
- stopListeningIfSignal
- } = mainThreadSetup.createSignalHandlers();
- process.on('newListener', startListeningIfSignal);
- process.on('removeListener', stopListeningIfSignal);
- // re-arm pre-existing signal event registrations
- // with this signal wrap capabilities.
- const signalEvents = process.eventNames().filter(isSignal);
- for (const ev of signalEvents) {
- process.emit('newListener', ev);
- }
-}
-
if (getOptionValue('--experimental-report')) {
const {
config,
- handleSignal,
report,
syncConfig
} = NativeModule.require('internal/process/report');
process.report = report;
// Download the CLI / ENV config into JS land.
syncConfig(config, false);
- if (config.events.includes('signal')) {
- process.on(config.signal, handleSignal);
- }
}
function setupProcessObject() {
diff --git a/lib/internal/bootstrap/pre_execution.js b/lib/internal/bootstrap/pre_execution.js
index 556c6ba39e..57f7420d6c 100644
--- a/lib/internal/bootstrap/pre_execution.js
+++ b/lib/internal/bootstrap/pre_execution.js
@@ -8,6 +8,9 @@ let traceEventsAsyncHook;
function prepareMainThreadExecution() {
setupTraceCategoryState();
+ // Only main thread receives signals.
+ setupSignalHandlers();
+
// If the process is spawned with env NODE_CHANNEL_FD, it's probably
// spawned by our child_process module, then initialize IPC.
// This attaches some internal event listeners and creates:
@@ -28,6 +31,28 @@ function prepareMainThreadExecution() {
loadPreloadModules();
}
+function setupSignalHandlers() {
+ const {
+ createSignalHandlers
+ } = require('internal/process/main_thread_only');
+ const {
+ startListeningIfSignal,
+ stopListeningIfSignal
+ } = createSignalHandlers();
+ process.on('newListener', startListeningIfSignal);
+ process.on('removeListener', stopListeningIfSignal);
+
+ if (getOptionValue('--experimental-report')) {
+ const {
+ config,
+ handleSignal
+ } = require('internal/process/report');
+ if (config.events.includes('signal')) {
+ process.on(config.signal, handleSignal);
+ }
+ }
+}
+
function setupTraceCategoryState() {
const {
asyncHooksEnabledInitial,
diff --git a/lib/internal/process/main_thread_only.js b/lib/internal/process/main_thread_only.js
index 2572402f62..24a7b02520 100644
--- a/lib/internal/process/main_thread_only.js
+++ b/lib/internal/process/main_thread_only.js
@@ -144,7 +144,6 @@ function createSignalHandlers() {
}
return {
- isSignal,
startListeningIfSignal,
stopListeningIfSignal
};