summaryrefslogtreecommitdiffstats
path: root/controller-server
diff options
context:
space:
mode:
authorJon Marius Venstad <venstad@gmail.com>2019-10-23 16:43:30 +0200
committerJon Marius Venstad <venstad@gmail.com>2019-10-23 16:43:30 +0200
commitc63f649840972999cee918c6f774869679185f60 (patch)
treedf7ee7ac05e407bd5cd69e66a0b855b63558ea7a /controller-server
parent66fe3e58722d80ed7b8c4573f5b635160bae897a (diff)
Simplify and make logic static
Diffstat (limited to 'controller-server')
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/Upgrader.java15
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 */