diff options
author | Jon Marius Venstad <venstad@gmail.com> | 2019-10-23 16:43:30 +0200 |
---|---|---|
committer | Jon Marius Venstad <venstad@gmail.com> | 2019-10-23 16:43:30 +0200 |
commit | c63f649840972999cee918c6f774869679185f60 (patch) | |
tree | df7ee7ac05e407bd5cd69e66a0b855b63558ea7a /controller-server/src | |
parent | 66fe3e58722d80ed7b8c4573f5b635160bae897a (diff) |
Simplify and make logic static
Diffstat (limited to 'controller-server/src')
-rw-r--r-- | controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/Upgrader.java | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/Upgrader.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/Upgrader.java index 5a67705383d..c2ffed47612 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/Upgrader.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/Upgrader.java @@ -116,11 +116,18 @@ public class Upgrader extends Maintainer { /** Returns the number of applications to upgrade in this run */ private int numberOfApplicationsToUpgrade() { - long intervalMillis = maintenanceInterval().dividedBy(Math.max(1, controller().curator().cluster().size())).toMillis(); - long intervalStart = ((controller().clock().millis() + intervalMillis / 2) / intervalMillis) * intervalMillis; + return numberOfApplicationsToUpgrade(maintenanceInterval().dividedBy(Math.max(1, controller().curator().cluster().size())).toMillis(), + controller().clock().millis(), + upgradesPerMinute()); + } - long upgradeIntervalMillis = upgradesPerMinute() > 60e3 ? 1 : upgradesPerMinute() < 60e-3 ? 1_000_000 : (long) (60_000 / upgradesPerMinute()); - return (int) ((intervalStart + intervalMillis) / upgradeIntervalMillis - intervalStart / intervalMillis); + /** Returns the number of applications to upgrade in the interval containing now */ + static int numberOfApplicationsToUpgrade(long intervalMillis, long nowMillis, double upgradesPerMinute) { + long intervalStart = Math.round(nowMillis / (double) intervalMillis) * intervalMillis; + double upgradesPerMilli = upgradesPerMinute / 60_000; + int upgradesAtStart = (int) (intervalStart * upgradesPerMilli); + int upgradesAtEnd = (int) ((intervalStart + intervalMillis) * upgradesPerMilli); + return upgradesAtEnd - upgradesAtStart; } /** Returns number of upgrades per minute */ |