From e8b992c6dfd9e6ee3158622ff96d45a107cf118f Mon Sep 17 00:00:00 2001 From: tknew2 Date: Sat, 11 Jan 2014 12:22:21 +0100 Subject: [PATCH] disconnect worker if not already done - clean kill --- lib/CLI.js | 12 ++++++------ lib/God.js | 44 +++++++++++++++++++++++++------------------- 2 files changed, 31 insertions(+), 25 deletions(-) diff --git a/lib/CLI.js b/lib/CLI.js index 0e8c0dc6..19703822 100644 --- a/lib/CLI.js +++ b/lib/CLI.js @@ -308,7 +308,7 @@ CLI.reloadProcessName = function (process_name) { console.error('Error : ' + err); process.exit(cst.ERROR_EXIT); } - console.log('\n' + cst.PREFIX_MSG + 'Process %s succesfully reloaded', proc.pm2_env.name); + console.log(cst.PREFIX_MSG + 'Process %s succesfully reloaded', proc.pm2_env.name); return next(); }); return false; @@ -326,7 +326,7 @@ CLI.restartProcessByName = function(pm2_name) { process.exit(cst.ERROR_EXIT); } UX.processing.stop(); - console.log('\n'+cst.PREFIX_MSG + 'Process ' + pm2_name + ' restarted'); + console.log(cst.PREFIX_MSG + 'Process ' + pm2_name + ' restarted'); speedList(); }); }; @@ -338,7 +338,7 @@ CLI.restartProcessById = function(pm2_id) { process.exit(cst.ERROR_EXIT); } UX.processing.stop(); - console.log('\n' + cst.PREFIX_MSG + 'Process ' + pm2_id + ' restarted'); + console.log(cst.PREFIX_MSG + 'Process ' + pm2_id + ' restarted'); speedList(); }); }; @@ -374,7 +374,7 @@ CLI.restartAll = function() { CLI.stopAll = function() { Satan.executeRemote('stopAll', {}, function(err, list) { if (err) { - console.error('\n' + cst.PREFIX_MSG_ERR + err); + console.error(cst.PREFIX_MSG_ERR + err); process.exit(cst.ERROR_EXIT); } UX.processing.stop(); @@ -387,7 +387,7 @@ CLI.deleteProcess = function(process_name) { console.log(cst.PREFIX_MSG + 'Stopping and deleting all processes'); Satan.executeRemote('deleteAll', {}, function(err, list) { if (err) { - console.error('\n' + cst.PREFIX_MSG_ERR + err); + console.error(cst.PREFIX_MSG_ERR + err); process.exit(cst.ERROR_EXIT); } UX.processing.stop(); @@ -398,7 +398,7 @@ CLI.deleteProcess = function(process_name) { console.log('Stopping and deleting process by id : %s', process_name); Satan.executeRemote('deleteProcessId', process_name, function(err, list) { if (err) { - console.error('\n' + cst.PREFIX_MSG_ERR + err); + console.error(cst.PREFIX_MSG_ERR + err); process.exit(cst.ERROR_EXIT); } UX.processing.stop(); diff --git a/lib/God.js b/lib/God.js index a2df152e..b92cf4c0 100644 --- a/lib/God.js +++ b/lib/God.js @@ -486,13 +486,14 @@ God.getFormatedProcesses = function() { var arr = []; for (var key in db) { - if (db[key]) + if (db[key]) { arr.push({ - pid : db[key].process.pid, - name : db[key].name, - pm2_env : db[key].pm2_env, - pm_id : db[key].pm2_env.pm_id + pid : db[key].process.pid, + name : db[key].pm2_env.name, + pm2_env : db[key].pm2_env, + pm_id : db[key].pm2_env.pm_id }); + } } return arr; }; @@ -591,12 +592,18 @@ God.stopProcessId = function(id, cb) { if (God.clusters_db[id].pm2_env.status == cst.STOPPED_STATUS) return cb(null, God.getFormatedProcesses()); - God.clusters_db[id].pm2_env.status = 'stopping'; - if (God.clusters_db[id].process.pid != 0) { + var proc = God.clusters_db[id]; + + if (proc.pm2_env.exec_mode == 'cluster_mode' && + proc.state != 'disconnected') + try { proc.disconnect(); } catch (e) {} + + + proc.pm2_env.status = 'stopping'; + if (proc.process.pid != 0) { try { process.kill(God.clusters_db[id].process.pid); - } catch(e) { - } + } catch(e) {} } setTimeout(function() { cb(null, God.getFormatedProcesses()); @@ -779,17 +786,16 @@ God.deleteAll = function(opts, cb) { */ God.killMe = function(env, cb) { - for (var id in God.clusters_db) { - God.stopProcessId(id, function() {}); - }; - God.bus.emit('pm2:kill', { - status : 'killed', - msg : 'pm2 has been killed via method' + God.deleteAll({}, function() { + God.bus.emit('pm2:kill', { + status : 'killed', + msg : 'pm2 has been killed via method' + }); + setTimeout(function() { + cb(null, {msg : 'pm2 killed'}); + process.exit(cst.SUCCESS_EXIT); + }, 500); }); - setTimeout(function() { - cb(null, {msg : 'pm2 killed'}); - process.exit(cst.SUCCESS_EXIT); - }, 1000); };