From 47cfdea74c8ab9552762c62a08c838757dc26d21 Mon Sep 17 00:00:00 2001 From: Liming Liu Date: Tue, 26 Mar 2024 15:00:31 +0000 Subject: [PATCH] fix: when max weight is 100000000, the replicas can be negative. Signed-off-by: Liming Liu --- utils/replicaset/canary.go | 2 +- utils/replicaset/canary_test.go | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/utils/replicaset/canary.go b/utils/replicaset/canary.go index 89ba648cf2..cf41e6baa5 100755 --- a/utils/replicaset/canary.go +++ b/utils/replicaset/canary.go @@ -383,7 +383,7 @@ func CalculateReplicaCountsForTrafficRoutedCanary(rollout *v1alpha1.Rollout, wei // trafficWeightToReplicas returns the appropriate replicas given the full spec.replicas and a weight // Rounds up if not evenly divisible. func trafficWeightToReplicas(replicas, weight, maxWeight int32) int32 { - return int32(math.Ceil(float64(weight*replicas) / float64(maxWeight))) + return int32(math.Ceil(float64(weight) * float64(replicas) / float64(maxWeight))) } func max(left, right int32) int32 { diff --git a/utils/replicaset/canary_test.go b/utils/replicaset/canary_test.go index d1d49072e8..dbe4ce5a03 100755 --- a/utils/replicaset/canary_test.go +++ b/utils/replicaset/canary_test.go @@ -960,6 +960,7 @@ func TestTrafficWeightToReplicas(t *testing.T) { assert.Equal(t, int32(4), trafficWeightToReplicas(10, 33, 100)) assert.Equal(t, int32(10), trafficWeightToReplicas(10, 99, 100)) assert.Equal(t, int32(10), trafficWeightToReplicas(10, 100, 100)) + assert.Equal(t, int32(23), trafficWeightToReplicas(23, 100000000, 100000000)) } func TestGetOtherRSs(t *testing.T) {