summaryrefslogtreecommitdiffstats
path: root/controller-server
diff options
context:
space:
mode:
authorjonmv <venstad@gmail.com>2023-06-30 10:57:45 +0200
committerjonmv <venstad@gmail.com>2023-06-30 10:57:45 +0200
commit3efa2694068b6e63d9c4d383a9c8d281c6ade2a6 (patch)
treee25c4a3835ef6c01a3a5e124faaaf5ace535a548 /controller-server
parent8ff5c45ca2429ed8fb5cdb252043af97e6e89d99 (diff)
Delay using released versions as compile version for three hours
Diffstat (limited to 'controller-server')
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/ApplicationController.java9
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/versions/VersionStatus.java2
-rw-r--r--controller-server/src/main/resources/configdefinitions/vespa.hosted.controller.maven.repository.config.maven-repository.def2
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ControllerTest.java7
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ControllerTester.java16
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/versions/VersionStatusTest.java7
6 files changed, 26 insertions, 17 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/ApplicationController.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/ApplicationController.java
index c3e1ff1dbf2..adadcab3270 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/ApplicationController.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/ApplicationController.java
@@ -81,6 +81,7 @@ import com.yahoo.vespa.hosted.controller.versions.VersionStatus;
import com.yahoo.vespa.hosted.controller.versions.VespaVersion;
import com.yahoo.vespa.hosted.controller.versions.VespaVersion.Confidence;
import com.yahoo.yolean.Exceptions;
+
import java.io.ByteArrayInputStream;
import java.security.Principal;
import java.security.cert.X509Certificate;
@@ -421,10 +422,10 @@ public class ApplicationController {
// Fall back to the newest, system-compatible version with unknown confidence. For public systems, this implies high confidence.
Set<Version> knownVersions = versionStatus.versions().stream().map(VespaVersion::versionNumber).collect(toSet());
- Optional<Version> unknown = controller.mavenRepository().metadata().versions().stream()
- .filter(version -> ! knownVersions.contains(version))
- .filter(systemCompatible)
- .max(naturalOrder());
+ Optional<Version> unknown = controller.mavenRepository().metadata().versions(clock.instant()).stream()
+ .filter(version -> ! knownVersions.contains(version))
+ .filter(systemCompatible)
+ .max(naturalOrder());
if (nonBroken.isPresent()) {
if (controller.system().isPublic() && unknown.isPresent() && unknown.get().isAfter(nonBroken.get()))
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 732327e25f6..9fb87735b42 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
@@ -148,7 +148,7 @@ public record VersionStatus(List<VespaVersion> versions, int currentMajor) {
.withProjectId()
.withJobs()));
List<VespaVersion> versions = new ArrayList<>();
- List<Version> releasedVersions = controller.mavenRepository().metadata().versions();
+ List<Version> releasedVersions = controller.mavenRepository().metadata().versions(controller.clock().instant());
for (DeploymentStatistics statistics : deploymentStatistics) {
if (statistics.version().isEmpty()) continue;
diff --git a/controller-server/src/main/resources/configdefinitions/vespa.hosted.controller.maven.repository.config.maven-repository.def b/controller-server/src/main/resources/configdefinitions/vespa.hosted.controller.maven.repository.config.maven-repository.def
index 2f32c0375ea..53b1e79900f 100644
--- a/controller-server/src/main/resources/configdefinitions/vespa.hosted.controller.maven.repository.config.maven-repository.def
+++ b/controller-server/src/main/resources/configdefinitions/vespa.hosted.controller.maven.repository.config.maven-repository.def
@@ -4,7 +4,7 @@ namespace=vespa.hosted.controller.maven.repository.config
# URL to the Maven repository API that holds artifacts for tenants in the controller's system
#
-apiUrl string default=https://repo.maven.apache.org/maven2/
+apiUrl string default=https://repo1.maven.org/maven2/
# Group ID of the artifact to list versions for
#
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ControllerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ControllerTest.java
index 43c532548d6..3a1cb322daf 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ControllerTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ControllerTest.java
@@ -1340,6 +1340,11 @@ public class ControllerTest {
tester.controllerTester().upgradeSystem(version0);
tester.upgrader().overrideConfidence(version0, Confidence.normal);
tester.controllerTester().computeVersionStatus();
+ Version version00 = Version.fromString("6.2");
+ assertEquals(version00, tester.applications().compileVersion(application, OptionalInt.of(7)));
+ assertEquals(version00, tester.applications().compileVersion(application, OptionalInt.empty()));
+ tester.clock().advance(Duration.ofSeconds(10801));
+ tester.controllerTester().computeVersionStatus();
assertEquals(version0, tester.applications().compileVersion(application, OptionalInt.of(7)));
assertEquals(version0, tester.applications().compileVersion(application, OptionalInt.empty()));
assertEquals("this system has no available versions on specified major: 8",
@@ -1351,6 +1356,7 @@ public class ControllerTest {
// System is upgraded
Version version1 = Version.fromString("7.2");
tester.controllerTester().upgradeSystem(version1);
+ tester.clock().advance(Duration.ofSeconds(10801));
tester.upgrader().overrideConfidence(version1, Confidence.normal);
tester.controllerTester().computeVersionStatus();
assertEquals(version0, tester.applications().compileVersion(application, OptionalInt.empty()));
@@ -1367,6 +1373,7 @@ public class ControllerTest {
Version version2 = Version.fromString("8.0");
tester.controllerTester().upgradeSystem(version2);
tester.upgrader().overrideConfidence(version2, Confidence.low);
+ tester.clock().advance(Duration.ofSeconds(10801));
tester.controllerTester().computeVersionStatus();
assertEquals(version1, tester.applications().compileVersion(application, OptionalInt.empty()));
assertEquals("this system has no available versions on specified major: 8",
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 43a85aa6aca..eabbdd76d5a 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
@@ -72,7 +72,6 @@ import java.util.concurrent.atomic.AtomicLong;
import java.util.function.Consumer;
import java.util.logging.Handler;
import java.util.logging.Logger;
-import java.util.stream.Collectors;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -290,14 +289,11 @@ public final class ControllerTester {
}
public ZoneId toZone(Environment environment) {
- switch (environment) {
- case dev: case test:
- return ZoneId.from(environment, RegionName.from("us-east-1"));
- case staging:
- return ZoneId.from(environment, RegionName.from("us-east-3"));
- default:
- return ZoneId.from(environment, RegionName.from("us-west-1"));
- }
+ return switch (environment) {
+ case dev, test -> ZoneId.from(environment, RegionName.from("us-east-1"));
+ case staging -> ZoneId.from(environment, RegionName.from("us-east-3"));
+ default -> ZoneId.from(environment, RegionName.from("us-west-1"));
+ };
}
public AthenzDomain createDomainWithAdmin(String domainName, AthenzUser user) {
@@ -395,7 +391,7 @@ public final class ControllerTester {
new CloudAccessControl(new MockUserManagement(), flagSource, serviceRegistry) :
new AthenzFacade(new AthenzClientFactoryMock(athensDb)),
flagSource,
- new MockMavenRepository(),
+ new MockMavenRepository(serviceRegistry.clock()),
serviceRegistry,
new MetricsMock(), new SecretStoreMock(),
new ControllerConfig.Builder().build(),
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 66a918a6f25..abce1c309ae 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,7 +386,12 @@ public class VersionStatusTest {
// Check release status is correct (static data in MockMavenRepository, and upgradeSystem "releases" a version).
assertTrue(versions.get(0).isReleased());
- assertFalse(versions.get(1).isReleased()); // tesst quirk: maven repo lost during controller recreation; useful to test status though
+ assertFalse(versions.get(1).isReleased()); // test quirk: maven repo lost during controller recreation; useful to test status though
+ assertFalse(versions.get(2).isReleased());
+
+ tester.clock().advance(Duration.ofSeconds(10801));
+ tester.controllerTester().computeVersionStatus();
+ versions = tester.controller().readVersionStatus().versions();
assertTrue(versions.get(2).isReleased());
// A new major version is released and all canaries upgrade