From 82d520e534fad1e33aa809f089605e23fd2e13cf Mon Sep 17 00:00:00 2001 From: Ian Macabulos Date: Tue, 20 Jan 2026 23:35:37 +0800 Subject: [PATCH] fix: move retry reset logic to api-router determineStatus --- server/model/monitor.js | 12 ------------ server/routers/api-router.js | 7 +++++++ 2 files changed, 7 insertions(+), 12 deletions(-) diff --git a/server/model/monitor.js b/server/model/monitor.js index 75e239bae..3b8d89dd4 100644 --- a/server/model/monitor.js +++ b/server/model/monitor.js @@ -447,20 +447,8 @@ class Monitor extends BeanModel { if (!previousBeat || this.type === "push") { previousBeat = await R.findOne("heartbeat", " monitor_id = ? ORDER BY time DESC", [this.id]); - if (previousBeat) { retries = previousBeat.retries; - - // We must check if the monitor is Upside Down (where UP=Bad, DOWN=Good) - if (this.upsideDown) { - if (previousBeat.status === DOWN) { - retries = 0; - } - } else { - if (previousBeat.status === UP) { - retries = 0; - } - } } } diff --git a/server/routers/api-router.js b/server/routers/api-router.js index 05c953756..87ba782bc 100644 --- a/server/routers/api-router.js +++ b/server/routers/api-router.js @@ -598,6 +598,13 @@ function determineStatus(status, previousHeartbeat, maxretries, isUpsideDown, be status = flipStatus(status); } + // This ensures that any previous retry count is cleared immediately when the monitor recovers. + if (status === UP) { + bean.retries = 0; + bean.status = status; + return; + } + if (previousHeartbeat) { if (previousHeartbeat.status === UP && status === DOWN) { // Going Down