summaryrefslogtreecommitdiff
path: root/lib/internal
diff options
context:
space:
mode:
authorJoyee Cheung <joyeec9h3@gmail.com>2019-02-10 19:28:16 +0800
committerAnna Henningsen <anna@addaleax.net>2019-02-24 23:41:27 +0100
commit34470b0524cf76fc3fee985f0b1bf0874a3c90bb (patch)
tree40193d4c24f83b021e66e4dba34b3b6d6ba0ec5a /lib/internal
parent7e0ddf66b9e09a27e0761b487342027ed6284027 (diff)
downloadandroid-node-v8-34470b0524cf76fc3fee985f0b1bf0874a3c90bb.tar.gz
android-node-v8-34470b0524cf76fc3fee985f0b1bf0874a3c90bb.tar.bz2
android-node-v8-34470b0524cf76fc3fee985f0b1bf0874a3c90bb.zip
process: setup signal handler in prepareMainThreadExecution
Because this is only necessary in the main thread. Also removes the rearming of signal events since no signal event handlers should be created during the execution of node.js now that we've made the creation of stdout and stderr streams lazy - this has been demonstrated in the test coverage. PR-URL: https://github.com/nodejs/node/pull/26227 Reviewed-By: Richard Lau <riclau@uk.ibm.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Anna Henningsen <anna@addaleax.net>
Diffstat (limited to 'lib/internal')
-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
};