Browse Source

cluster: Rename 'death' back to 'exit'

v0.9.1-release
isaacs 13 years ago
parent
commit
90ce5b3d41
  1. 26
      doc/api/cluster.markdown
  2. 8
      lib/cluster.js
  3. 10
      test/simple/test-cluster-basic.js
  4. 2
      test/simple/test-cluster-http-pipe.js
  5. 2
      test/simple/test-cluster-message.js
  6. 16
      test/simple/test-cluster-worker-disconnect.js

26
doc/api/cluster.markdown

@ -19,7 +19,7 @@ all share server ports.
cluster.fork();
}
cluster.on('death', function(worker) {
cluster.on('exit', function(worker) {
console.log('worker ' + worker.pid + ' died');
});
} else {
@ -87,7 +87,7 @@ This can be used to log worker activity, and create you own timeout.
cluster.on('listening', function (worker) {
clearTimeout(timeouts[worker.uniqueID]);
});
cluster.on('death', function (worker) {
cluster.on('exit', function (worker) {
clearTimeout(timeouts[worker.uniqueID]);
errorMsg();
});
@ -126,7 +126,7 @@ When a workers IPC channel has disconnected this event is emitted. This will hap
when the worker dies, usually after calling `.destroy()`.
When calling `.disconnect()`, there may be a delay between the
`disconnect` and `death` events. This event can be used to detect if
`disconnect` and `exit` events. This event can be used to detect if
the process is stuck in a cleanup or if there are long-living
connections.
@ -134,14 +134,14 @@ connections.
console.log('The worker #' + worker.uniqueID + ' has disconnected');
});
## Event: 'death'
## Event: 'exit'
* `worker` {Worker object}
When any of the workers die the cluster module will emit the 'death' event.
When any of the workers die the cluster module will emit the 'exit' event.
This can be used to restart the worker by calling `fork()` again.
cluster.on('death', function(worker) {
cluster.on('exit', function(worker) {
console.log('worker ' + worker.pid + ' died. restart...');
cluster.fork();
});
@ -286,10 +286,10 @@ This example will echo back all messages from the master:
### worker.destroy()
This function will kill the worker, and inform the master to not spawn a
new worker. To know the difference between suicide and accidentally death
a suicide boolean is set to true.
new worker. To know the difference between suicide and accidentally
exit, the `suicide` boolean is set to true.
cluster.on('death', function (worker) {
cluster.on('exit', function (worker) {
if (worker.suicide === true) {
console.log('Oh, it was just suicide\' – no need to worry').
}
@ -305,7 +305,7 @@ When calling this function the worker will no longer accept new connections, but
they will be handled by any other listening worker. Existing connection will be
allowed to exit as usual. When no more connections exist, the IPC channel to the worker
will close allowing it to die graceful. When the IPC channel is closed the `disconnect`
event will emit, this is then followed by the `death` event, there is emitted when
event will emit, this is then followed by the `exit` event, there is emitted when
the worker finally die.
Because there might be long living connections, it is useful to implement a timeout.
@ -427,13 +427,13 @@ on the specified worker.
// Worker has disconnected
};
### Event: 'death'
### Event: 'exit'
* `worker` {Worker object}
Same as the `cluster.on('death')` event, but emits only when the state change
Same as the `cluster.on('exit')` event, but emits only when the state change
on the specified worker.
cluster.fork().on('death', function (worker) {
cluster.fork().on('exit', function (worker) {
// Worker has died
};

8
lib/cluster.js

@ -294,9 +294,9 @@ function Worker(customEnv) {
// handle internalMessage, exit and disconnect event
this.process.on('internalMessage', handleMessage.bind(null, this));
this.process.on('exit', prepareDeath.bind(null, this, 'dead', 'death'));
this.process.on('exit', prepareExit.bind(null, this, 'dead', 'exit'));
this.process.on('disconnect',
prepareDeath.bind(null, this, 'disconnected', 'disconnect'));
prepareExit.bind(null, this, 'disconnected', 'disconnect'));
// relay message and error
this.process.on('message', this.emit.bind(this, 'message'));
@ -306,7 +306,7 @@ function Worker(customEnv) {
util.inherits(Worker, EventEmitter);
cluster.Worker = Worker;
function prepareDeath(worker, state, eventName) {
function prepareExit(worker, state, eventName) {
// set state to disconnect
worker.state = state;
@ -417,7 +417,7 @@ if (cluster.isMaster) {
// there are no more servers open so we will close the IPC channel.
// Closing the IPC channel will emit a disconnect event
// in both master and worker on the process object.
// This event will be handled by prepareDeath.
// This event will be handled by prepareExit.
self.process.disconnect();
});

10
test/simple/test-cluster-basic.js

@ -49,13 +49,13 @@ else if (cluster.isMaster) {
fork: false,
online: false,
listening: false,
death: false
exit: false
},
equal: {
fork: false,
online: false,
listening: false,
death: false
exit: false
}
},
@ -63,12 +63,12 @@ else if (cluster.isMaster) {
events: {
online: false,
listening: false,
death: false
exit: false
},
equal: {
online: false,
listening: false,
death: false
exit: false
},
states: {
none: false,
@ -106,7 +106,7 @@ else if (cluster.isMaster) {
});
//Kill process when worker is killed
cluster.on('death', function() {
cluster.on('exit', function() {
process.exit(0);
});

2
test/simple/test-cluster-http-pipe.js

@ -31,7 +31,7 @@ if (cluster.isMaster) {
assert.equal(msg, 'DONE');
ok = true;
});
worker.on('death', function() {
worker.on('exit', function() {
process.exit();
});
process.on('exit', function() {

2
test/simple/test-cluster-message.js

@ -114,7 +114,7 @@ else if (cluster.isMaster) {
worker.destroy();
});
worker.on('death', function() {
worker.on('exit', function() {
process.exit(0);
});

16
test/simple/test-cluster-worker-disconnect.js

@ -35,12 +35,12 @@ if (cluster.isWorker) {
var checks = {
cluster: {
emitDisconnect: false,
emitDeath: false,
emitExit: false,
callback: false
},
worker: {
emitDisconnect: false,
emitDeath: false,
emitExit: false,
state: false,
suicideMode: false,
died: false
@ -69,8 +69,8 @@ if (cluster.isWorker) {
cluster.once('disconnect', function() {
checks.cluster.emitDisconnect = true;
});
cluster.once('death', function() {
checks.cluster.emitDeath = true;
cluster.once('exit', function() {
checks.cluster.emitExit = true;
});
// Check worker eventes and properties
@ -81,8 +81,8 @@ if (cluster.isWorker) {
});
// Check that the worker died
worker.once('death', function() {
checks.worker.emitDeath = true;
worker.once('exit', function() {
checks.worker.emitExit = true;
checks.worker.died = !alive(worker.process.pid);
process.nextTick(function() {
process.exit(0);
@ -97,8 +97,8 @@ if (cluster.isWorker) {
// events
assert.ok(w.emitDisconnect, 'Disconnect event did not emit');
assert.ok(c.emitDisconnect, 'Disconnect event did not emit');
assert.ok(w.emitDeath, 'Death event did not emit');
assert.ok(c.emitDeath, 'Death event did not emit');
assert.ok(w.emitExit, 'Exit event did not emit');
assert.ok(c.emitExit, 'Exit event did not emit');
// flags
assert.equal(w.state, 'disconnected', 'The state property was not set');

Loading…
Cancel
Save