aboutsummaryrefslogtreecommitdiffstats
path: root/controller-server/src
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2021-08-18 12:58:22 +0200
committerMartin Polden <mpolden@mpolden.no>2021-08-18 13:00:25 +0200
commit3039216b76eb3255f28d50ed3e4a8d62fb8c604f (patch)
treeb004ff57dd8160549bcca87abf63c67e75bd45f6 /controller-server/src
parent1ec01c1db964c6a0c3553a6e3c1eb8cd9700413d (diff)
Remove redundant handling of missing serialized field
Diffstat (limited to 'controller-server/src')
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/OsUpgradeScheduler.java13
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/OsUpgrader.java6
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/OsVersionTargetSerializer.java6
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/OsUpgradeSchedulerTest.java31
4 files changed, 5 insertions, 51 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/OsUpgradeScheduler.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/OsUpgradeScheduler.java
index d3b05922d26..9f2318be4b3 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/OsUpgradeScheduler.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/OsUpgradeScheduler.java
@@ -11,7 +11,6 @@ import com.yahoo.vespa.hosted.controller.versions.OsVersionTarget;
import java.time.Duration;
import java.time.Instant;
-import java.time.LocalDate;
import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter;
import java.util.Objects;
@@ -141,18 +140,6 @@ public class OsUpgradeScheduler extends ControllerMaintainer {
@Override
public Version version(OsVersionTarget currentTarget, Instant now) {
Instant scheduledAt = currentTarget.scheduledAt();
- if (currentTarget.scheduledAt().equals(Instant.EPOCH)) {
- // TODO(mpolden): Remove this block after 2021-09-01. If we haven't written scheduledAt at least once,
- // we need to deduce the scheduled instant from the version.
- Version version = currentTarget.osVersion().version();
- String qualifier = version.getQualifier();
- if (!qualifier.matches("^\\d{8,}")) throw new IllegalArgumentException("Could not parse instant from version " + version);
-
- String dateString = qualifier.substring(0, 8);
- scheduledAt = LocalDate.parse(dateString, CALENDAR_VERSION_PATTERN)
- .atStartOfDay(ZoneOffset.UTC)
- .toInstant();
- }
Version currentVersion = currentTarget.osVersion().version();
if (scheduledAt.isBefore(now.minus(SCHEDULING_INTERVAL))) {
String calendarVersion = now.minus(AVAILABILITY_INTERVAL)
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/OsUpgrader.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/OsUpgrader.java
index 8aeede95878..e3bf2d401d3 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/OsUpgrader.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/OsUpgrader.java
@@ -89,15 +89,15 @@ public class OsUpgrader extends InfrastructureUpgrader<OsVersionTarget> {
/** Returns the available upgrade budget for given zone */
private Duration zoneBudgetOf(Duration totalBudget, ZoneApi zone) {
- if (!spendBudget(zone)) return Duration.ZERO;
+ if (!spendBudgetOn(zone)) return Duration.ZERO;
long consecutiveZones = upgradePolicy.asList().stream()
- .filter(parallelZones -> parallelZones.stream().anyMatch(this::spendBudget))
+ .filter(parallelZones -> parallelZones.stream().anyMatch(this::spendBudgetOn))
.count();
return totalBudget.dividedBy(consecutiveZones);
}
/** Returns whether to spend upgrade budget on given zone */
- private boolean spendBudget(ZoneApi zone) {
+ private boolean spendBudgetOn(ZoneApi zone) {
if (!zone.getEnvironment().isProduction()) return false;
if (controller().zoneRegistry().systemZone().getVirtualId().equals(zone.getVirtualId())) return false; // Controller zone
return true;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/OsVersionTargetSerializer.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/OsVersionTargetSerializer.java
index 4eac5a64b0c..e12c1c36dbd 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/OsVersionTargetSerializer.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/OsVersionTargetSerializer.java
@@ -45,10 +45,8 @@ public class OsVersionTargetSerializer {
Set<OsVersionTarget> osVersionTargets = new TreeSet<>();
array.traverse((ArrayTraverser) (i, inspector) -> {
OsVersion osVersion = osVersionSerializer.fromSlime(inspector);
- Duration upgradeBudget = Duration.ofMillis(inspector.field(upgradeBudgetField).asLong());
- // TODO(mpolden): Require after 2021-09-01
- Instant scheduledAt = SlimeUtils.optionalInstant(inspector.field(scheduledAtField))
- .orElse(Instant.EPOCH);
+ Duration upgradeBudget = SlimeUtils.duration(inspector.field(upgradeBudgetField));
+ Instant scheduledAt = SlimeUtils.instant(inspector.field(scheduledAtField));
osVersionTargets.add(new OsVersionTarget(osVersion, upgradeBudget, scheduledAt));
});
return Collections.unmodifiableSet(osVersionTargets);
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/OsUpgradeSchedulerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/OsUpgradeSchedulerTest.java
index 770d0a898fe..6e5e58ddf76 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/OsUpgradeSchedulerTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/OsUpgradeSchedulerTest.java
@@ -7,14 +7,12 @@ import com.yahoo.config.provision.zone.ZoneApi;
import com.yahoo.vespa.hosted.controller.ControllerTester;
import com.yahoo.vespa.hosted.controller.api.integration.deployment.StableOsVersion;
import com.yahoo.vespa.hosted.controller.integration.ZoneApiMock;
-import com.yahoo.vespa.hosted.controller.versions.OsVersion;
import com.yahoo.vespa.hosted.controller.versions.OsVersionTarget;
import org.junit.Test;
import java.time.Duration;
import java.time.Instant;
import java.util.List;
-import java.util.Set;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
@@ -67,35 +65,6 @@ public class OsUpgradeSchedulerTest {
assertEquals(version1, tester.controller().osVersionTarget(cloud).get().osVersion().version());
}
- @Test // TODO(mpolden): Remove this after 2021-09-01
- public void schedule_calendar_versioned_without_scheduled_time() {
- ControllerTester tester = new ControllerTester();
- OsUpgradeScheduler scheduler = new OsUpgradeScheduler(tester.controller(), Duration.ofDays(1));
- Instant t0 = Instant.parse("2021-01-23T07:00:00.00Z"); // Inside trigger period
- tester.clock().setInstant(t0);
-
- CloudName cloud = CloudName.from("cloud");
- ZoneApi zone = zone("prod.us-west-1", cloud);
- tester.zoneRegistry().setZones(zone).reprovisionToUpgradeOsIn(zone);
-
- // Initial run does nothing as the cloud does not have a target
- scheduler.maintain();
- assertTrue("No target set", tester.controller().osVersionTarget(cloud).isEmpty());
-
- // Target is set
- Version version0 = Version.fromString("7.0.0.20210123190005");
- // Simulate setting target without scheduledAt, to force parsing scheduled time from version number
- tester.curator().writeOsVersionTargets(Set.of(new OsVersionTarget(new OsVersion(version0, cloud),
- Duration.ofDays(1), Instant.EPOCH)));
-
- // Just over 45 days pass, and a new target replaces the expired one
- Version version1 = Version.fromString("7.0.0.20210302");
- tester.clock().advance(Duration.ofDays(45).plus(Duration.ofSeconds(1)));
- scheduler.maintain();
- assertEquals("New target set", version1,
- tester.controller().osVersionTarget(cloud).get().osVersion().version());
- }
-
@Test
public void schedule_stable_release() {
ControllerTester tester = new ControllerTester();