From e469b6adf40ec20aaa6a556b224257dbb00f2af3 Mon Sep 17 00:00:00 2001 From: Max Date: Tue, 28 Oct 2025 00:21:20 +0800 Subject: [PATCH] fix(external-endpoint): check per-endpoint maintenance windows (#1369) * fix(external-endpoint): check per-endpoint maintenance windows * refactor(external-endpoint): use tabs for indentation --- api/external_endpoint.go | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/api/external_endpoint.go b/api/external_endpoint.go index 16c1d088..a1a8ee91 100644 --- a/api/external_endpoint.go +++ b/api/external_endpoint.go @@ -68,11 +68,20 @@ func CreateExternalEndpointResult(cfg *config.Config) fiber.Handler { return c.Status(500).SendString(err.Error()) } logr.Infof("[api.CreateExternalEndpointResult] Successfully inserted result for external endpoint with key=%s and success=%s", c.Params("key"), success) + inEndpointMaintenanceWindow := false + for _, maintenanceWindow := range externalEndpoint.MaintenanceWindows { + if maintenanceWindow.IsUnderMaintenance() { + logr.Debug("[api.CreateExternalEndpointResult] Under endpoint maintenance window") + inEndpointMaintenanceWindow = true + } + } // Check if an alert should be triggered or resolved - if !cfg.Maintenance.IsUnderMaintenance() { + if !cfg.Maintenance.IsUnderMaintenance() && !inEndpointMaintenanceWindow { watchdog.HandleAlerting(convertedEndpoint, result, cfg.Alerting) externalEndpoint.NumberOfSuccessesInARow = convertedEndpoint.NumberOfSuccessesInARow externalEndpoint.NumberOfFailuresInARow = convertedEndpoint.NumberOfFailuresInARow + } else { + logr.Debug("[api.CreateExternalEndpointResult] Not handling alerting because currently in the maintenance window") } if cfg.Metrics { metrics.PublishMetricsForEndpoint(convertedEndpoint, result, extraLabels)