diff --git a/pkg/kube/ready.go b/pkg/kube/ready.go index 106c0be51..5d080d9bf 100644 --- a/pkg/kube/ready.go +++ b/pkg/kube/ready.go @@ -377,7 +377,7 @@ func (c *ReadyChecker) statefulSetReady(sts *appsv1.StatefulSet) bool { expectedReplicas := replicas - partition // Make sure all the updated pods have been scheduled - if int(sts.Status.UpdatedReplicas) != expectedReplicas { + if int(sts.Status.UpdatedReplicas) < expectedReplicas { c.log("StatefulSet is not ready: %s/%s. %d out of %d expected pods have been scheduled", sts.Namespace, sts.Name, sts.Status.UpdatedReplicas, expectedReplicas) return false } diff --git a/pkg/kube/ready_test.go b/pkg/kube/ready_test.go index cece5352d..931b8fa19 100644 --- a/pkg/kube/ready_test.go +++ b/pkg/kube/ready_test.go @@ -157,10 +157,24 @@ func Test_ReadyChecker_statefulSetReady(t *testing.T) { { name: "statefulset is not ready when partition is set", args: args{ - sts: newStatefulSet("foo", 1, 1, 1, 1), + sts: newStatefulSet("foo", 2, 1, 1, 0), }, want: false, }, + { + name: "statefulset is ready when partition is set and no change in template", + args: args{ + sts: newStatefulSet("foo", 2, 1, 2, 2), + }, + want: true, + }, + { + name: "statefulset is ready when partition is greater than replicas", + args: args{ + sts: newStatefulSet("foo", 1, 2, 1, 1), + }, + want: true, + }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) {