From cbcd6ab03be24197c80fdd10b151b2f05606ae02 Mon Sep 17 00:00:00 2001 From: stefanprodan Date: Wed, 1 Apr 2020 20:47:31 +0300 Subject: [PATCH] pkg/controller: avoid status conflicts on initialization --- pkg/controller/scheduler.go | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/pkg/controller/scheduler.go b/pkg/controller/scheduler.go index 99b67d1d..ed68722d 100644 --- a/pkg/controller/scheduler.go +++ b/pkg/controller/scheduler.go @@ -632,6 +632,13 @@ func (c *Controller) checkCanaryStatus(canary *flaggerv1.Canary, canaryControlle return true } + var err error + canary, err = c.flaggerClient.FlaggerV1beta1().Canaries(canary.Namespace).Get(canary.Name, metav1.GetOptions{}) + if err != nil { + c.logger.With("canary", fmt.Sprintf("%s.%s", canary.Name, canary.Namespace)).Errorf("%v", err) + return false + } + if canary.Status.Phase == "" || canary.Status.Phase == flaggerv1.CanaryPhaseInitializing { if err := canaryController.SyncStatus(canary, flaggerv1.CanaryStatus{Phase: flaggerv1.CanaryPhaseInitialized}); err != nil { c.logger.With("canary", fmt.Sprintf("%s.%s", canary.Name, canary.Namespace)).Errorf("%v", err)