Skip to content

Commit 905c7c0

Browse files
committed
guard against sending IPC when not connected
1 parent aecb74a commit 905c7c0

3 files changed

Lines changed: 29 additions & 22 deletions

File tree

lib/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ module.exports = function (script, scriptArgs, nodeArgs, opts) {
102102

103103
// Relay SIGTERM
104104
process.on('SIGTERM', function () {
105-
if (child) {
105+
if (child && child.connected) {
106106
if (cfg.graceful_ipc) {
107107
log.info('Sending IPC: ' + JSON.stringify(cfg.graceful_ipc));
108108
child.send(cfg.graceful_ipc);

test/fixture/cluster.js

Lines changed: 27 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,33 @@
11
var cluster = require('cluster');
22

3-
if (cluster.isMaster) {
4-
function createWorker(i) {
5-
var worker = cluster.fork();
6-
worker.on('message', function (msg) {
7-
console.log('Message from worker' + i + ':', msg);
8-
});
9-
worker.on('exit', function (code) {
10-
console.log(`Worker #${i} exited with code: ${code}`);
11-
});
12-
return worker;
13-
}
3+
function createWorker(i) {
4+
var worker = cluster.fork();
5+
6+
worker.on('message', function (msg) {
7+
console.log('Message from worker' + i + ':', msg);
8+
});
9+
10+
worker.on('exit', function (code) {
11+
console.log('Worker', i, 'exited with code:', code);
12+
});
1413

14+
return worker;
15+
}
16+
17+
if (cluster.isWorker) {
18+
var server = require('./server');
19+
20+
process.on('disconnect', function () {
21+
console.log(process.pid, 'disconnect received, shutting down');
22+
if (server.lisening) {
23+
server.close();
24+
}
25+
});
26+
27+
process.send('Hello');
28+
}
29+
30+
if (cluster.isMaster) {
1531
for (var i = 0; i < 2; i += 1) {
1632
console.log('Forking worker', i);
1733
createWorker(i);
@@ -22,13 +38,4 @@ if (cluster.isMaster) {
2238
console.log('All workers disconnected.');
2339
});
2440
});
25-
} else {
26-
var server = require('./server');
27-
process.on('disconnect', function () {
28-
console.log(process.pid, 'disconnect received, shutting down');
29-
if (server.lisening) {
30-
server.close();
31-
}
32-
});
33-
process.send('Hello');
3441
}

test/fixture/server.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ process.once('SIGTERM', function () {
2222
}
2323
});
2424

25-
process.once('beforeExit', function() {
25+
process.once('beforeExit', function () {
2626
console.log('exit');
2727
});
2828

0 commit comments

Comments
 (0)