From da7f7698b92383b9fd511d2f1c19fce084460d80 Mon Sep 17 00:00:00 2001 From: vmarchaud Date: Sun, 21 May 2017 00:49:09 +0200 Subject: [PATCH] (docker) better auto exit trigger (#2861) --- lib/CLI/RuntimeCLI.js | 39 +++++++++++++++++++++++++++++---------- 1 file changed, 29 insertions(+), 10 deletions(-) diff --git a/lib/CLI/RuntimeCLI.js b/lib/CLI/RuntimeCLI.js index 51e887d4..e050c228 100644 --- a/lib/CLI/RuntimeCLI.js +++ b/lib/CLI/RuntimeCLI.js @@ -118,23 +118,42 @@ function exitPM2() { * function activated via --auto-exit */ function autoExit() { - setTimeout(function() { - pm2.list(function(err, apps) { - if (err) console.error(err.stack || err); + var interval = 3000; + var aliveInterval = interval * 1.5; - var online_count = 0; + setTimeout(function () { + var alive = false + var aliveTimer = setTimeout(function () { + if (!alive) { + console.error('PM2 Daemon is dead'); + process.exit(1); + } + }, aliveInterval); - apps.forEach(function(app) { - if (app.pm2_env.status == cst.ONLINE_STATUS || - app.pm2_env.status == cst.LAUNCHING_STATUS) - online_count++; + pm2.list(function (err, apps) { + if (err) { + console.log('pm2.list got error') + console.error(err); + exitPM2(); + } + + clearTimeout(aliveTimer); + alive = true; + + var appOnline = 0; + + apps.forEach(function (app) { + if (app.pm2_env.status === cst.ONLINE_STATUS || + app.pm2_env.status === cst.LAUNCHING_STATUS) { + appOnline++; + } }); - if (online_count == 0) { + if (appOnline === 0) { console.log('0 application online, exiting'); exitPM2(); } autoExit(); }); - }, 3000); + }, interval); }