diff --git a/pkg/db/canary.go b/pkg/db/canary.go index f53fe276e..f6d70afa0 100644 --- a/pkg/db/canary.go +++ b/pkg/db/canary.go @@ -178,13 +178,10 @@ func DeleteChecks(id []string) error { return Gorm.Table("checks").Where("id IN (?)", id).UpdateColumn("deleted_at", time.Now()).Error } -func GetCanary(id string) (*pkg.Canary, error) { - var model *pkg.Canary - if err := Gorm.Where("id = ?", id).First(&model).Error; err != nil { - return nil, err - } - - return model, nil +func GetCanary(id string) (pkg.Canary, error) { + var model pkg.Canary + err := Gorm.Where("id = ?", id).First(&model).Error + return model, err } func FindCanaryByID(id string) (*pkg.Canary, error) { diff --git a/pkg/jobs/canary/canary_jobs.go b/pkg/jobs/canary/canary_jobs.go index cdd7b39e9..cb14ded26 100644 --- a/pkg/jobs/canary/canary_jobs.go +++ b/pkg/jobs/canary/canary_jobs.go @@ -51,7 +51,8 @@ func StartScanCanaryConfigs(dataFile string, configFiles []string) { type CanaryJob struct { *kommons.Client Kubernetes kubernetes.Interface - v1.Canary + Canary v1.Canary + DBCanary pkg.Canary // model pkg.Canary LogPass bool LogFail bool @@ -111,6 +112,11 @@ func (job CanaryJob) Run() { logger.Errorf("error deleting transformed checks for canary %s: %v", job.Canary.GetPersistedID(), err) } + if len(checksToMarkHealthy) > 0 { + // Remove from cron and let the transformed checks repopulate + DeleteCanaryJob(job.DBCanary.ID.String()) + } + // Update last runtime map canaryLastRuntimes.Store(job.Canary.GetPersistedID(), time.Now()) } @@ -268,6 +274,7 @@ func SyncCanaryJob(canary v1.Canary) error { Client: Kommons, Kubernetes: Kubernetes, Canary: canary, + DBCanary: dbCanary, LogPass: canary.IsTrace() || canary.IsDebug() || LogPass, LogFail: canary.IsTrace() || canary.IsDebug() || LogFail, }