diff --git a/packages/strapi/bin/strapi-start.js b/packages/strapi/bin/strapi-start.js index 232643286d..49159394ea 100644 --- a/packages/strapi/bin/strapi-start.js +++ b/packages/strapi/bin/strapi-start.js @@ -73,7 +73,9 @@ module.exports = function() { setFilesToWatch(process.cwd()); if (cluster.isMaster) { - cluster.on('message', () => { + cluster.on('message', (worker, message) => { + if (message !== 'reload') return; + strapi.log.info('The server is restarting\n'); _.forEach(cluster.workers, worker => worker.kill()); @@ -81,6 +83,14 @@ module.exports = function() { cluster.fork(); }); + cluster.on('message', (worker, message) => { + if (message !== 'stop') return; + + _.forEach(cluster.workers, worker => worker.kill()); + + process.exit(0); + }); + cluster.fork(); } diff --git a/packages/strapi/lib/Strapi.js b/packages/strapi/lib/Strapi.js index 36320ea578..aad2b8fb42 100644 --- a/packages/strapi/lib/Strapi.js +++ b/packages/strapi/lib/Strapi.js @@ -137,6 +137,9 @@ class Strapi extends EventEmitter { stop() { // Destroy server and available connections. this.server.destroy(); + + if (cluster.isWorker && process.env.NODE_ENV === 'development' && this.config.currentEnvironment.server.autoReload === true) process.send('stop'); + // Kill process. process.exit(0); } @@ -162,7 +165,7 @@ class Strapi extends EventEmitter { reload() { const reload = function() { - if (cluster.isWorker && process.env.NODE_ENV === 'development' && this.config.currentEnvironment.server.autoReload === true) process.send('message'); + if (cluster.isWorker && process.env.NODE_ENV === 'development' && this.config.currentEnvironment.server.autoReload === true) process.send('reload'); }; reload.isReloading = false; diff --git a/packages/strapi/lib/reload.js b/packages/strapi/lib/reload.js index becbf1d502..646624d5ab 100644 --- a/packages/strapi/lib/reload.js +++ b/packages/strapi/lib/reload.js @@ -20,7 +20,7 @@ module.exports = function reload() { try { const reload = function() { - if (cluster.isWorker && process.env.NODE_ENV === 'development' && this.config.environments[this.config.environment].server.reload === true) process.send('message'); + if (cluster.isWorker && process.env.NODE_ENV === 'development' && this.config.environments[this.config.environment].server.reload === true) process.send('reload'); }; reload.isReloading = false;