summaryrefslogtreecommitdiffstats
path: root/node-repository/src
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2023-07-17 09:39:08 +0200
committerMartin Polden <mpolden@mpolden.no>2023-07-17 09:39:08 +0200
commit76fc8204d3dd361f10621c6b487fd1fcd1bd34f1 (patch)
treec31734bd865c82533d6ddb90db053de306be1a1a /node-repository/src
parentd7a6ce401ee686ed3fb7a194e367405c7c6a9fe9 (diff)
Allow burst up to max growth
Diffstat (limited to 'node-repository/src')
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningThrottler.java2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningThrottlerTest.java17
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));
}
}