From 68d41d5f70f51c01601941ae3a2ef0ee01964284 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C5=ABdolfs=20Bundulis?= Date: Thu, 11 Jul 2024 12:40:05 +0300 Subject: [PATCH 1/2] honour forceStop in exit handler --- lib/forever-monitor/monitor.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/forever-monitor/monitor.js b/lib/forever-monitor/monitor.js index 54a77d4..e9a6b13 100755 --- a/lib/forever-monitor/monitor.js +++ b/lib/forever-monitor/monitor.js @@ -202,6 +202,10 @@ Monitor.prototype.start = function(restart) { } function restartChild() { + if (self.forceStop) { + letChildDie(); + return; + } self.forceStop = false; self.forceRestart = false; process.nextTick(function() { From cafb210913715095c9b68f3050b80d2a94c19125 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C5=ABdolfs=20Bundulis?= Date: Thu, 11 Jul 2024 13:13:43 +0300 Subject: [PATCH 2/2] add a short-circuit so that stopall does not wait for the spin time --- lib/forever-monitor/monitor.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/lib/forever-monitor/monitor.js b/lib/forever-monitor/monitor.js index e9a6b13..c19ff68 100755 --- a/lib/forever-monitor/monitor.js +++ b/lib/forever-monitor/monitor.js @@ -208,6 +208,7 @@ Monitor.prototype.start = function(restart) { } self.forceStop = false; self.forceRestart = false; + self.spinRestartTimeout = null; process.nextTick(function() { self.start(true); }); @@ -222,7 +223,7 @@ Monitor.prototype.start = function(restart) { ) { letChildDie(); } else if (spinning) { - setTimeout(restartChild, self.spinSleepTime); + self.spinRestartTimeout = setTimeout(restartChild, self.spinSleepTime); } else { restartChild(); } @@ -371,6 +372,12 @@ Monitor.prototype.kill = function(forceStop) { // and prevent auto-restart // if (forceStop) { + if (self.spinRestartTimeout) { + clearTimeout(self.spinRestartTimeout); + self.spinRestartTimeout = null; + self.emit('stop', self.childData); + return; + } this.forceStop = true; // // If we have a time before we truly kill forcefully, set up a timer