From ab1194f74d5fec8ae4c4dc3c919080312901cc6b Mon Sep 17 00:00:00 2001 From: Tyler Koenig Date: Sun, 28 Jun 2026 11:15:35 -0400 Subject: [PATCH] fix(monitor): refresh maintenance cache after loading sites Move refreshMaintenanceCache() to after sites are loaded into liveState. Previously it ran before the site loading loop, so on the first iteration liveState was empty and the cache resolved to nothing. This caused groups to briefly show DOWN on startup for children that were in maintenance, until the next poll cycle repopulated the cache. --- internal/monitor/monitor.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/internal/monitor/monitor.go b/internal/monitor/monitor.go index 1497805..1483ecf 100644 --- a/internal/monitor/monitor.go +++ b/internal/monitor/monitor.go @@ -283,8 +283,6 @@ func (e *Engine) Start(ctx context.Context) { default: } - e.refreshMaintenanceCache(ctx) - configs, err := e.db.GetSites(ctx) if err != nil { e.AddLog(fmt.Sprintf("Failed to load sites: %v", err)) @@ -327,6 +325,10 @@ func (e *Engine) Start(ctx context.Context) { } } + // Refresh after sites load so the cache covers newly added sites. + // On first iteration liveState was empty before the loop above. + e.refreshMaintenanceCache(ctx) + e.mu.RLock() var vanished []int for id := range e.liveState {