Skip to content

Commit

Permalink
Reset progress counter if complete rollout becomes incomplete and not…
Browse files Browse the repository at this point in the history
… in the middle of update

Signed-off-by: Hui Kang <[email protected]>
  • Loading branch information
Hui Kang committed Nov 12, 2021
1 parent cde7d30 commit 5241e56
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 11 deletions.
23 changes: 13 additions & 10 deletions rollout/restart.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@ package rollout

import (
"context"
"fmt"
// "fmt"
"sort"
"time"

"github.com/argoproj/argo-rollouts/utils/conditions"
// "github.com/argoproj/argo-rollouts/utils/conditions"
appsv1 "k8s.io/api/apps/v1"
corev1 "k8s.io/api/core/v1"
policy "k8s.io/api/policy/v1beta1"
Expand Down Expand Up @@ -125,14 +125,17 @@ func (p *RolloutPodRestarter) Reconcile(roCtx *rolloutContext) error {
canRestart -= 1
restarted += 1

// Everytime a pod is restarted, updating the rollout's progressingCondition
existProgressingCondition := conditions.GetRolloutCondition(roCtx.rollout.Status, v1alpha1.RolloutProgressing)
if existProgressingCondition != nil {
conditions.RemoveRolloutCondition(&roCtx.rollout.Status, v1alpha1.RolloutProgressing)
}
msg := fmt.Sprintf("pod %s restarted", pod.Name)
newProgressingCondition := conditions.NewRolloutCondition(v1alpha1.RolloutProgressing, corev1.ConditionTrue, conditions.NewRSAvailableReason, msg)
conditions.SetRolloutCondition(&roCtx.rollout.Status, *newProgressingCondition)
// TODO: remove
/*
// Everytime a pod is restarted, updating the rollout's progressingCondition
existProgressingCondition := conditions.GetRolloutCondition(roCtx.rollout.Status, v1alpha1.RolloutProgressing)
if existProgressingCondition != nil {
conditions.RemoveRolloutCondition(&roCtx.rollout.Status, v1alpha1.RolloutProgressing)
}
msg := fmt.Sprintf("pod %s restarted", pod.Name)
newProgressingCondition := conditions.NewRolloutCondition(v1alpha1.RolloutProgressing, corev1.ConditionTrue, conditions.NewRSAvailableReason, msg)
conditions.SetRolloutCondition(&roCtx.rollout.Status, *newProgressingCondition)
*/
}
remaining := needsRestart - restarted

Expand Down
14 changes: 13 additions & 1 deletion rollout/sync.go
Original file line number Diff line number Diff line change
Expand Up @@ -584,7 +584,19 @@ func (c *rolloutContext) calculateRolloutConditions(newStatus v1alpha1.RolloutSt
} else {
if completeCond != nil {
updateCompletedCond := conditions.NewRolloutCondition(v1alpha1.RolloutCompleted, corev1.ConditionFalse, conditions.RolloutCompletedReason, conditions.RolloutCompletedReason)
conditions.SetRolloutCondition(&newStatus, *updateCompletedCond)
changed := conditions.SetRolloutCondition(&newStatus, *updateCompletedCond)

// if any rs status changes (e.g., pod restarted, evicted -> recreated ) to a previous completed rollout,
// we need to reset the progressCondition to avoid timeout
if changed && c.stableRS != nil && c.newRS != nil && (replicasetutil.GetPodTemplateHash(c.stableRS) == replicasetutil.GetPodTemplateHash(c.newRS)) {
existProgressingCondition := conditions.GetRolloutCondition(newStatus, v1alpha1.RolloutProgressing)
if existProgressingCondition != nil {
conditions.RemoveRolloutCondition(&newStatus, v1alpha1.RolloutProgressing)
}
msg := fmt.Sprintf("stable rs %s progressing", c.stableRS.Name)
newProgressingCondition := conditions.NewRolloutCondition(v1alpha1.RolloutProgressing, corev1.ConditionTrue, conditions.NewRSAvailableReason, msg)
conditions.SetRolloutCondition(&newStatus, *newProgressingCondition)
}
}
}

Expand Down

0 comments on commit 5241e56

Please sign in to comment.