Browse Source

cluster: expose result of send()

There are several places in the cluster module where a version
of process.send() is called, but the result is swallowed. Most
of these cases are internal, but Worker.prototype.send(), which
is publicly documented, also suffers from this problem. This
commit exposes the return value to facilitate better error
handling, and bring Worker.prototype.send() into compliance
with the documentation.

PR-URL: https://github.com/nodejs/node/pull/6998
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Ron Korving <ron@ronkorving.nl>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
v6.x
cjihrig 9 years ago
committed by Rod Vagg
parent
commit
6a62bb0070
  1. 8
      lib/cluster.js
  2. 3
      test/parallel/test-cluster-fork-env.js
  3. 3
      test/parallel/test-cluster-worker-events.js

8
lib/cluster.js

@ -61,7 +61,7 @@ Worker.prototype.kill = function() {
};
Worker.prototype.send = function() {
this.process.send.apply(this.process, arguments);
return this.process.send.apply(this.process, arguments);
};
Worker.prototype.isDead = function isDead() {
@ -531,7 +531,7 @@ function masterInit() {
}
function send(worker, message, handle, cb) {
sendHelper(worker.process, message, handle, cb);
return sendHelper(worker.process, message, handle, cb);
}
}
@ -699,7 +699,7 @@ function workerInit() {
};
function send(message, cb) {
sendHelper(process, message, null, cb);
return sendHelper(process, message, null, cb);
}
function _disconnect(masterInitiated) {
@ -745,7 +745,7 @@ function sendHelper(proc, message, handle, cb) {
if (cb) callbacks[seq] = cb;
message.seq = seq;
seq += 1;
proc.send(message, handle);
return proc.send(message, handle);
}

3
test/parallel/test-cluster-fork-env.js

@ -4,11 +4,12 @@ var assert = require('assert');
var cluster = require('cluster');
if (cluster.isWorker) {
cluster.worker.send({
const result = cluster.worker.send({
prop: process.env['cluster_test_prop'],
overwrite: process.env['cluster_test_overwrite']
});
assert.strictEqual(result, true);
} else if (cluster.isMaster) {
var checks = {

3
test/parallel/test-cluster-worker-events.js

@ -14,7 +14,8 @@ if (cluster.isMaster) {
process.exit(0);
});
worker.send('SOME MESSAGE');
const result = worker.send('SOME MESSAGE');
assert.strictEqual(result, true);
return;
}

Loading…
Cancel
Save