From 79de7657bcf9ff9d3bdf79b0b5fe82f60c3da03c Mon Sep 17 00:00:00 2001 From: xuezhongxiong Date: Thu, 16 Feb 2017 16:15:27 +0800 Subject: [PATCH] add a new props :"proc.pm2_env.restart_task" to solve the problem : "process still restart after it be stop or delete." --- lib/God.js | 2 +- lib/God/ActionMethods.js | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) 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];