diff --git a/lib/God.js b/lib/God.js index 363b49eb..ac610c44 100644 --- a/lib/God.js +++ b/lib/God.js @@ -338,7 +338,7 @@ God.handleExit = function handleExit(clu, exit_code, kill_signal) { } if (!stopping && !overlimit) { - setTimeout(function() { + proc.pm2_env.restart_task = setTimeout(function() { proc.pm2_env.restart_time += 1; God.executeApp(proc.pm2_env); }, restart_delay); diff --git a/lib/God/ActionMethods.js b/lib/God/ActionMethods.js index 1f6551a3..ee71a07c 100644 --- a/lib/God/ActionMethods.js +++ b/lib/God/ActionMethods.js @@ -241,10 +241,16 @@ module.exports = function(God) { if (!(id in God.clusters_db)) return cb(God.logAndGenerateError(id + ' : id unknown'), {}); - if (God.clusters_db[id].pm2_env.status == cst.STOPPED_STATUS) + + var proc = God.clusters_db[id]; + + //clear time-out restart task + clearTimeout(proc.pm2_env.restart_task); + + if (proc.pm2_env.status == cst.STOPPED_STATUS) return cb(null, God.getFormatedProcess(id)); // state == 'none' means that the process is not online yet - if (God.clusters_db[id].state && God.clusters_db[id].state === 'none') + if (proc.state && proc.state === 'none') return setTimeout(function() { God.stopProcessId(id, cb); }, 250); var proc = God.clusters_db[id];