mirror of
https://github.com/NodeBB/NodeBB.git
synced 2026-07-01 01:49:01 +02:00
possible fix for #2492
This commit is contained in:
41
loader.js
41
loader.js
@@ -21,7 +21,6 @@ var nconf = require('nconf'),
|
||||
|
||||
Loader = {
|
||||
timesStarted: 0,
|
||||
shutdown_queue: [],
|
||||
js: {
|
||||
cache: undefined,
|
||||
map: undefined
|
||||
@@ -86,12 +85,6 @@ Loader.addClusterEvents = function(callback) {
|
||||
hash: Loader.css.hash
|
||||
});
|
||||
}
|
||||
|
||||
// Kill an instance in the shutdown queue
|
||||
var workerToKill = Loader.shutdown_queue.pop();
|
||||
if (workerToKill) {
|
||||
cluster.workers[workerToKill].kill();
|
||||
}
|
||||
break;
|
||||
case 'restart':
|
||||
console.log('[cluster] Restarting...');
|
||||
@@ -269,9 +262,16 @@ function clusterWorkers() {
|
||||
}
|
||||
|
||||
Loader.restart = function(callback) {
|
||||
// Slate existing workers for termination -- welcome to death row.
|
||||
Loader.shutdown_queue = Loader.shutdown_queue.concat(Object.keys(cluster.workers));
|
||||
Loader.start();
|
||||
console.log('[cluster] closing server');
|
||||
|
||||
killWorkers();
|
||||
|
||||
closeHandles();
|
||||
|
||||
server.close(function() {
|
||||
console.log('[cluster] server closed');
|
||||
Loader.start();
|
||||
});
|
||||
};
|
||||
|
||||
Loader.reload = function() {
|
||||
@@ -283,10 +283,7 @@ Loader.reload = function() {
|
||||
};
|
||||
|
||||
Loader.stop = function() {
|
||||
Object.keys(cluster.workers).forEach(function(id) {
|
||||
// Gracefully close workers
|
||||
cluster.workers[id].kill();
|
||||
});
|
||||
killWorkers();
|
||||
|
||||
// Clean up the pidfile
|
||||
fs.unlinkSync(__dirname + '/pidfile');
|
||||
@@ -294,6 +291,22 @@ Loader.stop = function() {
|
||||
server.close();
|
||||
};
|
||||
|
||||
function killWorkers() {
|
||||
Object.keys(cluster.workers).forEach(function(id) {
|
||||
cluster.workers[id].kill();
|
||||
});
|
||||
}
|
||||
|
||||
function closeHandles() {
|
||||
for(var h in handles) {
|
||||
var handle = handles[h];
|
||||
if (handle) {
|
||||
h.close();
|
||||
delete handles[handle];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loader.notifyWorkers = function (msg) {
|
||||
Object.keys(cluster.workers).forEach(function(id) {
|
||||
cluster.workers[id].send(msg);
|
||||
|
||||
Reference in New Issue
Block a user