mirror of
https://github.com/nodejs/node.git
synced 2026-10-14 10:26:26 -04:00
cluster: don't send messages if no IPC channel
Avoid sending messages if the IPC channel is already disconnected. It avoids undesired errors when calling `process.disconnect` when there are still pending IPC messages. PR-URL: https://github.com/nodejs/node/pull/7132 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
This commit is contained in:
1 parent
556dd3b732
commit
8c53d2fe9f
2 files changed
+21
No files matched your search
@@ -743,6 +743,9 @@ function workerInit() {
|
||||
var seq = 0;
|
||||
var callbacks = {};
|
||||
function sendHelper(proc, message, handle, cb) {
|
||||
if (!proc.connected)
|
||||
return false;
|
||||
|
||||
// Mark message as internal. See INTERNAL_PREFIX in lib/child_process.js
|
||||
message = util._extend({ cmd: 'NODE_CLUSTER' }, message);
|
||||
if (cb) callbacks[seq] = cb;
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
'use strict';
|
||||
const common = require('../common');
|
||||
const assert = require('assert');
|
||||
const cluster = require('cluster');
|
||||
|
||||
if (cluster.isMaster) {
|
||||
const worker = cluster.fork();
|
||||
worker.on('exit', common.mustCall((code, signal) => {
|
||||
assert.strictEqual(code, 0, 'worker did not exit normally');
|
||||
assert.strictEqual(signal, null, 'worker did not exit normally');
|
||||
}));
|
||||
} else {
|
||||
const net = require('net');
|
||||
const server = net.createServer();
|
||||
server.listen(common.PORT, common.mustCall(() => {
|
||||
process.disconnect();
|
||||
}));
|
||||
}
|
||||
Reference in new issue
Block a user