From a22856f45bc2ace1bb7dbf920c9b92115b32a816 Mon Sep 17 00:00:00 2001 From: Liang Deng <283304489@qq.com> Date: Thu, 8 Aug 2024 14:20:09 +0800 Subject: [PATCH] fix: when ParallelPodManagementConcurrency is nil, scaling down to 0 fails (#7948) Signed-off-by: Liang Deng <283304489@qq.com> --- pkg/controller/instanceset/utils.go | 2 +- pkg/controller/instanceset/utils_test.go | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/pkg/controller/instanceset/utils.go b/pkg/controller/instanceset/utils.go index 0b8c175346d..c3d2419f938 100644 --- a/pkg/controller/instanceset/utils.go +++ b/pkg/controller/instanceset/utils.go @@ -260,7 +260,7 @@ func GetPodNameSetFromInstanceSetCondition(its *workloads.InstanceSet, condition // if concurrency is nil, concurrency will be treated as 100%. func CalculateConcurrencyReplicas(concurrency *intstr.IntOrString, replicas int) (int, error) { if concurrency == nil { - return replicas, nil + return integer.IntMax(replicas, 1), nil } // 'roundUp=true' will ensure at least 1 pod is reserved if concurrency > "0%" and replicas > 0. diff --git a/pkg/controller/instanceset/utils_test.go b/pkg/controller/instanceset/utils_test.go index 9f35bbea7f8..3cfc7cf4df8 100644 --- a/pkg/controller/instanceset/utils_test.go +++ b/pkg/controller/instanceset/utils_test.go @@ -335,6 +335,20 @@ var _ = Describe("utils test", func() { concurrencyReplicas, err = CalculateConcurrencyReplicas(concurrent, replicas) Expect(err).Should(BeNil()) Expect(concurrencyReplicas).Should(Equal(10)) + + By("concurrent is nil, replicas = 10") + replicas = 10 + concurrent = nil + concurrencyReplicas, err = CalculateConcurrencyReplicas(concurrent, replicas) + Expect(err).Should(BeNil()) + Expect(concurrencyReplicas).Should(Equal(10)) + + By("concurrent is nil, replicas = 0") + replicas = 0 + concurrent = nil + concurrencyReplicas, err = CalculateConcurrencyReplicas(concurrent, replicas) + Expect(err).Should(BeNil()) + Expect(concurrencyReplicas).Should(Equal(1)) }) }) })