mirror of
https://github.com/NodeBB/NodeBB.git
synced 2026-03-20 19:32:13 +01:00
zero downtime and reload support with cluster module
This commit is contained in:
@@ -40,7 +40,7 @@ var async = require('async'),
|
||||
emitter.emit('nodebb:ready');
|
||||
}
|
||||
|
||||
callback.apply(null, arguments);
|
||||
if (callback) callback.apply(null, arguments);
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
@@ -5,6 +5,7 @@ var mkdirp = require('mkdirp'),
|
||||
path = require('path'),
|
||||
fs = require('fs'),
|
||||
nconf = require('nconf'),
|
||||
cluster = require('cluster'),
|
||||
|
||||
emitter = require('../emitter'),
|
||||
plugins = require('../plugins'),
|
||||
@@ -13,6 +14,16 @@ var mkdirp = require('mkdirp'),
|
||||
Templates = {};
|
||||
|
||||
Templates.compile = function(callback) {
|
||||
if (cluster.isWorker && process.env.cluster_setup !== 'true') {
|
||||
return setTimeout(function() {
|
||||
console.log('FAKING TEMPLATE COMPILE');
|
||||
emitter.emit('templates:compiled');
|
||||
if (callback) callback();
|
||||
}, 1000);
|
||||
} else {
|
||||
console.log('REAL TEMPLATE COMPILE');
|
||||
}
|
||||
|
||||
var baseTemplatesPath = nconf.get('base_templates_path'),
|
||||
viewsPath = nconf.get('views_dir'),
|
||||
themeTemplatesPath = nconf.get('theme_templates_path');
|
||||
|
||||
@@ -128,14 +128,7 @@ module.exports = function(app, data) {
|
||||
|
||||
routeCurrentTheme(app, data.currentThemeId, data.themesData);
|
||||
routeThemeScreenshots(app, data.themesData);
|
||||
|
||||
if (process.env.cluster_setup === 'true') {
|
||||
meta.templates.compile();
|
||||
} else {
|
||||
setTimeout(function() {
|
||||
emitter.emit('templates:compiled');
|
||||
}, 1000);
|
||||
}
|
||||
meta.templates.compile();
|
||||
|
||||
return middleware;
|
||||
};
|
||||
|
||||
@@ -14,6 +14,7 @@ var groups = require('../groups'),
|
||||
async = require('async'),
|
||||
winston = require('winston'),
|
||||
index = require('./index'),
|
||||
cluster = require('cluster'),
|
||||
|
||||
SocketAdmin = {
|
||||
user: require('./admin/user'),
|
||||
@@ -39,7 +40,13 @@ SocketAdmin.before = function(socket, method, next) {
|
||||
};
|
||||
|
||||
SocketAdmin.reload = function(socket, data, callback) {
|
||||
meta.reload(callback);
|
||||
if (cluster.isWorker) {
|
||||
process.send({
|
||||
action: 'reload'
|
||||
});
|
||||
} else {
|
||||
meta.reload(callback);
|
||||
}
|
||||
};
|
||||
|
||||
SocketAdmin.restart = function(socket, data, callback) {
|
||||
|
||||
@@ -41,7 +41,7 @@ if(nconf.get('ssl')) {
|
||||
emailer.registerApp(app);
|
||||
notifications.init();
|
||||
|
||||
if (process.env.cluster_setup === 'true') {
|
||||
if (cluster.isWorker && process.env.cluster_setup === 'true') {
|
||||
user.startJobs();
|
||||
}
|
||||
|
||||
@@ -50,7 +50,7 @@ if(nconf.get('ssl')) {
|
||||
meta.js.minify(app.enabled('minification'));
|
||||
meta.css.minify();
|
||||
|
||||
if (process.env.cluster_setup === 'true') {
|
||||
if (cluster.isWorker && process.env.cluster_setup === 'true') {
|
||||
meta.sounds.init();
|
||||
}
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user