From e3d5feb76c4dd7169694ec60ee4f7ac0d977a9f9 Mon Sep 17 00:00:00 2001 From: zach593 Date: Wed, 10 May 2023 11:14:29 +0800 Subject: [PATCH] fix HPA plain metric calculate fix inconsistency in plain metric replica calculator when usageRatio == 1.0, keep same with resource replicas --- .../podautoscaler/replica_calculator.go | 2 +- .../podautoscaler/replica_calculator_test.go | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/pkg/controller/podautoscaler/replica_calculator.go b/pkg/controller/podautoscaler/replica_calculator.go index e84f6362dc4..db2bd16c3d8 100644 --- a/pkg/controller/podautoscaler/replica_calculator.go +++ b/pkg/controller/podautoscaler/replica_calculator.go @@ -214,7 +214,7 @@ func (c *ReplicaCalculator) calcPlainMetricReplicas(metrics metricsclient.PodMet for podName := range missingPods { metrics[podName] = metricsclient.PodMetric{Value: targetUsage} } - } else { + } else if usageRatio > 1.0 { // on a scale-up, treat missing pods as using 0% of the resource request for podName := range missingPods { metrics[podName] = metricsclient.PodMetric{Value: 0} diff --git a/pkg/controller/podautoscaler/replica_calculator_test.go b/pkg/controller/podautoscaler/replica_calculator_test.go index 4edc9a6d625..e82efe64307 100644 --- a/pkg/controller/podautoscaler/replica_calculator_test.go +++ b/pkg/controller/podautoscaler/replica_calculator_test.go @@ -1322,6 +1322,21 @@ func TestReplicaCalcEmptyCPURequest(t *testing.T) { tc.runTest(t) } +func TestPlainMetricReplicaCalcMissingMetricsNoChangeEq(t *testing.T) { + tc := replicaCalcTestCase{ + currentReplicas: 5, + expectedReplicas: 5, + metric: &metricInfo{ + name: "qps", + levels: []int64{20000, 19000, 21000}, + targetUsage: 20000, + expectedUsage: 20000, + metricType: podMetric, + }, + } + tc.runTest(t) +} + func TestReplicaCalcMissingMetricsNoChangeEq(t *testing.T) { tc := replicaCalcTestCase{ currentReplicas: 2,