You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[BUG] Lite alerts re-fire after an app restart — email cooldown is in-memory only #981
Split out from #976. The reporter saw the same alerts pop up several times, hours after the originating event.
EmailAlertService deduplicates alert emails with an in-memory ConcurrentDictionary<string, DateTime> (_cooldowns, keyed {serverId}:{metricName}) checked against App.EmailCooldownMinutes. It is never persisted, so an app restart clears every cooldown and an alert that fired recently can immediately fire again.
UI acknowledgements (alert_state.json) do persist, but only clear on a genuinely newer event.
Suggested fix
Persist the cooldown state so it survives restarts. The config_alert_log table already records every alert with alert_time, server_id, metric_name — the cooldown check could read the most recent alert_time for the key instead of relying solely on the in-memory dictionary.
Fixed in #986 (commit 20696a5) — alert email cooldown is now persisted across restarts, so alerts don't re-fire after the app cycles. Ships in the next release.
Activity
Merge pull request #986 from erikdarlingdata/feature/981-alert-cooldo…
erikdarlingdata commentedon May 23, 2026
Fixed in #986 (commit 20696a5) — alert email cooldown is now persisted across restarts, so alerts don't re-fire after the app cycles. Ships in the next release.
Persist the Lite alert email cooldown across restarts (erikdarlingdat…
Persist the Dashboard alert email cooldown across restarts
Persist AnalysisNotificationService cooldown across restarts
Fix erikdarlingdata#1145: Webhook alerts re-fire after an app restart
Fix erikdarlingdata#1154: key the alert delivery cooldown on the erik…
The daily digest and sweep rollup asked 'did I send' when the channel…