summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorEvan Lucas <evanlucas@me.com>2015-11-10 13:14:34 -0600
committerEvan Lucas <evanlucas@me.com>2016-04-25 19:24:37 -0500
commit4f619bde4c20fc46fa3e1b8671ab7174d29f340d (patch)
treecbd6e3c3b1ce44bb1f55a08a94375a84b2f163da /lib
parent9bb5a5e2a127010807f5b8a8bf4cf34109271c55 (diff)
downloadnode-new-4f619bde4c20fc46fa3e1b8671ab7174d29f340d.tar.gz
cluster: migrate from worker.suicide
Replace it with worker.exitedAfterDisconnect. Print deprecation message when getting or setting until it is removed. PR-URL: https://github.com/nodejs/node/pull/3743 Fixes: https://github.com/nodejs/node/issues/3721 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Сковорода Никита Андреевич <chalkerx@gmail.com> Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Myles Borins <myles.borins@gmail.com> Reviewed-By: Stephen Belanger <admin@stephenbelanger.com>
Diffstat (limited to 'lib')
-rw-r--r--lib/cluster.js48
1 files changed, 31 insertions, 17 deletions
diff --git a/lib/cluster.js b/lib/cluster.js
index b43d4a0a34..651b2f481d 100644
--- a/lib/cluster.js
+++ b/lib/cluster.js
@@ -27,7 +27,20 @@ function Worker(options) {
if (options === null || typeof options !== 'object')
options = {};
- this.suicide = undefined;
+ this.exitedAfterDisconnect = undefined;
+
+ Object.defineProperty(this, 'suicide', {
+ get: function() {
+ // TODO: Print deprecation message.
+ return this.exitedAfterDisconnect;
+ },
+ set: function(val) {
+ // TODO: Print deprecation message.
+ this.exitedAfterDisconnect = val;
+ },
+ enumerable: true
+ });
+
this.state = options.state || 'none';
this.id = options.id | 0;
@@ -355,7 +368,7 @@ function masterInit() {
removeWorker(worker);
}
- worker.suicide = !!worker.suicide;
+ worker.exitedAfterDisconnect = !!worker.exitedAfterDisconnect;
worker.state = 'dead';
worker.emit('exit', exitCode, signalCode);
cluster.emit('exit', worker, exitCode, signalCode);
@@ -376,7 +389,7 @@ function masterInit() {
*/
if (worker.isDead()) removeWorker(worker);
- worker.suicide = !!worker.suicide;
+ worker.exitedAfterDisconnect = !!worker.exitedAfterDisconnect;
worker.state = 'disconnected';
worker.emit('disconnect');
cluster.emit('disconnect', worker);
@@ -407,7 +420,7 @@ function masterInit() {
};
Worker.prototype.disconnect = function() {
- this.suicide = true;
+ this.exitedAfterDisconnect = true;
send(this, { act: 'disconnect' });
removeHandlesForWorker(this);
removeWorker(this);
@@ -432,8 +445,8 @@ function masterInit() {
queryServer(worker, message);
else if (message.act === 'listening')
listening(worker, message);
- else if (message.act === 'suicide')
- suicide(worker, message);
+ else if (message.act === 'exitedAfterDisconnect')
+ exitedAfterDisconnect(worker, message);
else if (message.act === 'close')
close(worker, message);
}
@@ -444,14 +457,14 @@ function masterInit() {
cluster.emit('online', worker);
}
- function suicide(worker, message) {
- worker.suicide = true;
+ function exitedAfterDisconnect(worker, message) {
+ worker.exitedAfterDisconnect = true;
send(worker, { ack: message.seq });
}
function queryServer(worker, message) {
// Stop processing if worker already disconnecting
- if (worker.suicide)
+ if (worker.exitedAfterDisconnect)
return;
var args = [message.address,
message.port,
@@ -533,7 +546,7 @@ function workerInit() {
cluster.worker = worker;
process.once('disconnect', function() {
worker.emit('disconnect');
- if (!worker.suicide) {
+ if (!worker.exitedAfterDisconnect) {
// Unexpected disconnect, master exited, or some such nastiness, so
// worker exits immediately.
process.exit(0);
@@ -670,10 +683,10 @@ function workerInit() {
};
Worker.prototype.destroy = function() {
- this.suicide = true;
+ this.exitedAfterDisconnect = true;
if (!this.isConnected()) process.exit(0);
var exit = process.exit.bind(null, 0);
- send({ act: 'suicide' }, () => process.disconnect());
+ send({ act: 'exitedAfterDisconnect' }, () => process.disconnect());
process.once('disconnect', exit);
};
@@ -682,19 +695,20 @@ function workerInit() {
}
function _disconnect(masterInitiated) {
- this.suicide = true;
+ this.exitedAfterDisconnect = true;
let waitingCount = 1;
function checkWaitingCount() {
waitingCount--;
if (waitingCount === 0) {
- // If disconnect is worker initiated, wait for ack to be sure suicide
- // is properly set in the master, otherwise, if it's master initiated
- // there's no need to send the suicide message
+ // If disconnect is worker initiated, wait for ack to be sure
+ // exitedAfterDisconnect is properly set in the master, otherwise, if
+ // it's master initiated there's no need to send the
+ // exitedAfterDisconnect message
if (masterInitiated) {
process.disconnect();
} else {
- send({ act: 'suicide' }, () => process.disconnect());
+ send({ act: 'exitedAfterDisconnect' }, () => process.disconnect());
}
}
}