diff options
author | Martin Polden <mpolden@mpolden.no> | 2023-07-17 09:39:08 +0200 |
---|---|---|
committer | Martin Polden <mpolden@mpolden.no> | 2023-07-17 09:39:08 +0200 |
commit | 76fc8204d3dd361f10621c6b487fd1fcd1bd34f1 (patch) | |
tree | c31734bd865c82533d6ddb90db053de306be1a1a /node-repository | |
parent | d7a6ce401ee686ed3fb7a194e367405c7c6a9fe9 (diff) |
Allow burst up to max growth
Diffstat (limited to 'node-repository')
2 files changed, 11 insertions, 8 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningThrottler.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningThrottler.java index 3a11ac76085..b08e7dbccb0 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningThrottler.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningThrottler.java @@ -55,7 +55,7 @@ public class ProvisioningThrottler { } static boolean throttle(int recent, int total, Duration window, Agent agent) { - if (total < MIN_SIZE && recent < MIN_SIZE) return false; // Allow burst in small zones + if (total < MIN_SIZE && recent < MAX_GROWTH) return false; // Allow burst in small zones int maxGrowth = Math.min(MAX_GROWTH, (int) (total * MAX_GROWTH_RATE)); boolean throttle = recent > maxGrowth; if (throttle) { diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningThrottlerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningThrottlerTest.java index 66c17e1d37e..f38b4732ed7 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningThrottlerTest.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningThrottlerTest.java @@ -3,6 +3,8 @@ package com.yahoo.vespa.hosted.provision.provisioning; import com.yahoo.vespa.hosted.provision.node.Agent; import org.junit.jupiter.api.Test; +import java.time.Duration; + import static org.junit.jupiter.api.Assertions.assertFalse; import static com.yahoo.vespa.hosted.provision.provisioning.ProvisioningThrottler.throttle; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -15,13 +17,14 @@ class ProvisioningThrottlerTest { @Test void throttling() { Agent agent = Agent.system; - assertFalse(throttle(99, 99, agent)); - assertTrue(throttle(100, 99, agent)); - assertFalse(throttle(40, 100, agent)); - assertTrue(throttle(41, 100, agent)); - assertTrue(throttle(100, 100, agent)); - assertFalse(throttle(200, 2100, agent)); - assertTrue(throttle(201, 2100, agent)); + Duration window = Duration.ofHours(1); + assertFalse(throttle(199, 99, window, agent)); + assertTrue(throttle(200, 99, window, agent)); + assertFalse(throttle(40, 100, window, agent)); + assertTrue(throttle(41, 100, window, agent)); + assertTrue(throttle(100, 100, window, agent)); + assertFalse(throttle(200, 2100, window, agent)); + assertTrue(throttle(201, 2100, window, agent)); } } |