Skip to content

Commit

Permalink
fix: stuck rollout when rollout is paused
Browse files Browse the repository at this point in the history
Signed-off-by: asingh51 <[email protected]>

fix: stuck rollout when rollout is paused

Signed-off-by: asingh51 <[email protected]>

fix: stuck rollout when rollout is paused

Signed-off-by: asingh51 <[email protected]>

fix: stuck rollout when rollout is paused

Signed-off-by: asingh51 <[email protected]>

fix: stuck rollout when rollout is paused

Signed-off-by: asingh51 <[email protected]>

fix: stuck rollout when rollout is paused

Signed-off-by: ashutosh16 <[email protected]>

fix: stuck rollout when rollout is paused

Signed-off-by: ashutosh16 <[email protected]>

fix: stuck rollout when rollout is paused

Signed-off-by: ashutosh16 <[email protected]>

fix: stuck rollout when rollout is paused

Signed-off-by: ashutosh16 <[email protected]>
  • Loading branch information
asingh51 authored and ashutosh16 committed Feb 12, 2024
1 parent f305342 commit 4ffad05
Show file tree
Hide file tree
Showing 3 changed files with 95 additions and 1 deletion.
2 changes: 1 addition & 1 deletion rollout/canary.go
Original file line number Diff line number Diff line change
Expand Up @@ -184,7 +184,7 @@ func (c *rolloutContext) scaleDownOldReplicaSetsForCanary(oldRSs []*appsv1.Repli

annotationedRSs := int32(0)
for _, targetRS := range oldRSs {
if c.isReplicaSetReferenced(targetRS) {
if c.rollout.Spec.Strategy.Canary.TrafficRouting != nil && c.isReplicaSetReferenced(targetRS) {
// We might get here if user interrupted an an update in order to move back to stable.
c.log.Infof("Skip scale down of older RS '%s': still referenced", targetRS.Name)
continue
Expand Down
17 changes: 17 additions & 0 deletions test/e2e/canary_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -565,6 +565,23 @@ func (s *CanarySuite) TestCanaryScaleDownOnAbortNoTrafficRouting() {
ExpectRevisionPodCount("2", 0)
}

func (s *CanarySuite) TestCanaryWithPausedRollout() {
(s.Given().
HealthyRollout(`@functional/rollout-canary-with-pause.yaml`).
When().
ApplyManifests().
MarkPodsReady("1", 3). // mark all 3 pods ready
WaitForRolloutStatus("Healthy").
UpdateSpec(). // update to revision 2
WaitForRolloutStatus("Paused").
UpdateSpec(). // update to revision 3
WaitForRolloutStatus("Paused").
Then().
ExpectRevisionPodCount("1", 3).
ExpectRevisionPodCount("2", 0).
ExpectRevisionPodCount("3", 1))
}

func (s *CanarySuite) TestCanaryUnScaleDownOnAbort() {
s.Given().
HealthyRollout(`@functional/canary-unscaledownonabort.yaml`).
Expand Down
77 changes: 77 additions & 0 deletions test/e2e/functional/rollout-canary-with-pause.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
apiVersion: v1
kind: Service
metadata:
name: rollout-canary-with-pause-root
spec:
type: NodePort
ports:
- port: 80
targetPort: http
protocol: TCP
name: http
selector:
app: rollout-canary-with-pause
---
apiVersion: v1
kind: Service
metadata:
name: rollout-canary-with-pause-canary
spec:
type: NodePort
ports:
- port: 80
targetPort: http
protocol: TCP
name: http
selector:
app: rollout-canary-with-pause
---
apiVersion: v1
kind: Service
metadata:
name: rollout-canary-with-pause-stable
spec:
type: NodePort
ports:
- port: 80
targetPort: http
protocol: TCP
name: http
selector:
app: rollout-canary-with-pause
---
apiVersion: argoproj.io/v1alpha1
kind: Rollout
metadata:
name: rollout-canary-with-pause
spec:
replicas: 3
revisionHistoryLimit: 3
progressDeadlineSeconds: 5
selector:
matchLabels:
app: rollout-canary-with-pause
template:
metadata:
labels:
app: rollout-canary-with-pause
spec:
containers:
- name: rollouts-demo
image: nginx:1.19-alpine
ports:
- containerPort: 80
readinessProbe:
initialDelaySeconds: 10
httpGet:
path: /
port: 80
periodSeconds: 30
strategy:
canary:
canaryService: rollout-canary-with-pause-canary
stableService: rollout-canary-with-pause-stable
steps:
- setWeight: 20
- pause: {}

0 comments on commit 4ffad05

Please sign in to comment.