diff options
5 files changed, 32 insertions, 38 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/versions/VersionStatus.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/versions/VersionStatus.java index 97506d3f6ea..ab445de5a7f 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/versions/VersionStatus.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/versions/VersionStatus.java @@ -99,6 +99,11 @@ public class VersionStatus { } infrastructureVersions.putAll(systemApplicationVersions.asVersionMap()); + // The controller version is the lowest controller version of all controllers + ControllerVersion controllerVersion = controllerVersions.keySet().stream() + .min(Comparator.naturalOrder()) + .get(); + // The system version is the oldest infrastructure version, if that version is newer than the current system // version Version newSystemVersion = infrastructureVersions.keySet().stream().min(Comparator.naturalOrder()).get(); @@ -129,7 +134,7 @@ public class VersionStatus { try { boolean isReleased = Collections.binarySearch(releasedVersions, statistics.version()) >= 0; VespaVersion vespaVersion = createVersion(statistics, - controllerVersions.keySet(), + controllerVersion, systemVersion, isReleased, systemApplicationVersions.matching(statistics.version()), @@ -235,13 +240,11 @@ public class VersionStatus { } private static VespaVersion createVersion(DeploymentStatistics statistics, - Set<ControllerVersion> controllerVersions, + ControllerVersion controllerVersion, Version systemVersion, boolean isReleased, NodeVersions nodeVersions, Controller controller) { - var latestVersion = controllerVersions.stream().max(Comparator.naturalOrder()).get(); - var controllerVersion = controllerVersions.stream().min(Comparator.naturalOrder()).get(); var isSystemVersion = statistics.version().equals(systemVersion); var isControllerVersion = statistics.version().equals(controllerVersion.version()); var confidence = controller.curator().readConfidenceOverrides().get(statistics.version()); @@ -260,8 +263,8 @@ public class VersionStatus { } // Preserve existing commit details if we've previously computed status for this version - var commitSha = latestVersion.commitSha(); - var commitDate = latestVersion.commitDate(); + var commitSha = controllerVersion.commitSha(); + var commitDate = controllerVersion.commitDate(); if (previousStatus != null) { commitSha = previousStatus.releaseCommit(); commitDate = previousStatus.committedAt(); @@ -272,7 +275,6 @@ public class VersionStatus { confidence = previousStatus.confidence(); } } - return new VespaVersion(statistics, commitSha, commitDate, diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ControllerTester.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ControllerTester.java index bd2868aeb0e..53eb30bb2f3 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ControllerTester.java +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ControllerTester.java @@ -4,7 +4,6 @@ package com.yahoo.vespa.hosted.controller; import com.yahoo.component.Version; import com.yahoo.config.provision.ApplicationId; import com.yahoo.config.provision.Environment; -import com.yahoo.config.provision.HostName; import com.yahoo.config.provision.RegionName; import com.yahoo.config.provision.TenantName; import com.yahoo.config.provision.zone.ZoneApi; @@ -193,14 +192,7 @@ public final class ControllerTester { /** Upgrade controller to given version */ public void upgradeController(Version version, String commitSha, Instant commitDate) { - for (var hostname : controller().curator().cluster()) { - upgradeController(hostname, version, commitSha, commitDate); - } - } - - /** Upgrade controller to given version */ - public void upgradeController(HostName hostname, Version version, String commitSha, Instant commitDate) { - controller().curator().writeControllerVersion(hostname, new ControllerVersion(version, commitSha, commitDate)); + controller().curator().writeControllerVersion(controller().hostname(), new ControllerVersion(version, commitSha, commitDate)); computeVersionStatus(); } diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTester.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTester.java index fdfe348cacb..e5127264b47 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTester.java +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTester.java @@ -6,12 +6,13 @@ import com.yahoo.config.provision.ApplicationId; import com.yahoo.config.provision.Environment; import com.yahoo.config.provision.InstanceName; import com.yahoo.config.provision.TenantName; +import com.yahoo.config.provision.zone.ZoneApi; import com.yahoo.test.ManualClock; import com.yahoo.vespa.hosted.controller.Application; +import com.yahoo.vespa.hosted.controller.Instance; import com.yahoo.vespa.hosted.controller.ApplicationController; import com.yahoo.vespa.hosted.controller.Controller; import com.yahoo.vespa.hosted.controller.ControllerTester; -import com.yahoo.vespa.hosted.controller.Instance; import com.yahoo.vespa.hosted.controller.api.integration.deployment.JobType; import com.yahoo.vespa.hosted.controller.api.integration.stubs.MockBuildService; import com.yahoo.vespa.hosted.controller.application.ApplicationPackage; @@ -26,6 +27,8 @@ import com.yahoo.vespa.hosted.controller.maintenance.NameServiceDispatcher; import com.yahoo.vespa.hosted.controller.maintenance.OutstandingChangeDeployer; import com.yahoo.vespa.hosted.controller.maintenance.ReadyJobsTrigger; import com.yahoo.vespa.hosted.controller.maintenance.Upgrader; +import com.yahoo.vespa.hosted.controller.versions.ControllerVersion; +import com.yahoo.vespa.hosted.controller.versions.VersionStatus; import java.time.Duration; import java.time.Instant; @@ -131,32 +134,40 @@ public class DeploymentTester { // TODO(mpolden): Change callers to use ControllerTester#computeVersionStatus and remove this public void computeVersionStatus() { - tester.computeVersionStatus(); + controller().updateVersionStatus(VersionStatus.compute(controller())); } // TODO(mpolden): Change callers to use ControllerTester#upgradeController and remove this public void upgradeController(Version version) { - tester.upgradeController(version); + upgradeController(version, "badc0ffee", Instant.EPOCH); } // TODO(mpolden): Change callers to use ControllerTester#upgradeController and remove this public void upgradeController(Version version, String commitSha, Instant commitDate) { - tester.upgradeController(version, commitSha, commitDate); + controller().curator().writeControllerVersion(controller().hostname(), new ControllerVersion(version, commitSha, commitDate)); + computeVersionStatus(); } // TODO(mpolden): Change callers to use ControllerTester#upgradeSystemApplications and remove this public void upgradeSystemApplications(Version version) { - tester.upgradeSystemApplications(version); + upgradeSystemApplications(version, SystemApplication.all()); } // TODO(mpolden): Change callers to use ControllerTester#upgradeSystemApplications and remove this public void upgradeSystemApplications(Version version, List<SystemApplication> systemApplications) { - tester.upgradeSystemApplications(version, systemApplications); + for (ZoneApi zone : tester.zoneRegistry().zones().all().zones()) { + for (SystemApplication application : systemApplications) { + tester.configServer().setVersion(application.id(), zone.getId(), version); + tester.configServer().convergeServices(application.id(), zone.getId()); + } + } + computeVersionStatus(); } // TODO(mpolden): Change callers to use ControllerTester#upgradeSystem and remove this public void upgradeSystem(Version version) { - tester.upgradeSystem(version); + upgradeController(version); + upgradeSystemApplications(version); upgrader().maintain(); readyJobTrigger().maintain(); } diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/InternalDeploymentTester.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/InternalDeploymentTester.java index 0b5e44aad70..fb9367cc020 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/InternalDeploymentTester.java +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/InternalDeploymentTester.java @@ -82,11 +82,7 @@ public class InternalDeploymentTester { public Instance instance(ApplicationId id) { return tester.instance(id); } public InternalDeploymentTester() { - this(new ControllerTester()); - } - - public InternalDeploymentTester(ControllerTester controllerTester) { - tester = new DeploymentTester(controllerTester); + tester = new DeploymentTester(); jobs = tester.controller().jobController(); routing = tester.controllerTester().serviceRegistry().routingGeneratorMock(); cloud = (MockTesterCloud) tester.controller().jobController().cloud(); diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/versions/VersionStatusTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/versions/VersionStatusTest.java index 380f1c6dd48..c3bb5cb568f 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/versions/VersionStatusTest.java +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/versions/VersionStatusTest.java @@ -386,16 +386,9 @@ public class VersionStatusTest { @Test public void testCommitDetailsPreservation() { - HostName controller1 = HostName.from("controller-1"); - HostName controller2 = HostName.from("controller-2"); - HostName controller3 = HostName.from("controller-3"); - MockCuratorDb db = new MockCuratorDb(Stream.of(controller1, controller2, controller3) - .map(hostName -> hostName.value() + ":2222") - .collect(Collectors.joining(","))); - InternalDeploymentTester tester = new InternalDeploymentTester(new ControllerTester(db)); - + InternalDeploymentTester tester = new InternalDeploymentTester(); // Commit details are set for initial version - var version0 = new Version("7.2"); + var version0 = new Version("6.2"); var commitSha0 = "badc0ffee"; var commitDate0 = Instant.EPOCH; tester.controllerTester().upgradeSystem(version0); @@ -407,7 +400,7 @@ public class VersionStatusTest { tester.deploymentContext().submit().deploy(); // Commit details are updated for new version - var version1 = new Version("7.3"); + var version1 = new Version("6.3"); var commitSha1 = "deadbeef"; var commitDate1 = Instant.ofEpochMilli(123); tester.controllerTester().upgradeController(version1, commitSha1, commitDate1); |