summaryrefslogtreecommitdiffstats
path: root/configserver
diff options
context:
space:
mode:
authorJon Marius Venstad <venstad@gmail.com>2022-03-11 16:57:06 +0100
committerJon Marius Venstad <venstad@gmail.com>2022-03-11 16:57:06 +0100
commit10de54c5cb765e9994da3b12681ae98c59000d3b (patch)
tree29bf6f088d3555bf62233e672ea28d283f50c538 /configserver
parenta943db2029d7b78eb3dca70bf5a6a4377d9ae743 (diff)
Check wanted version instead of newest built model
Diffstat (limited to 'configserver')
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/application/TenantApplications.java8
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/application/TenantApplicationsTest.java31
2 files changed, 23 insertions, 16 deletions
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/application/TenantApplications.java b/configserver/src/main/java/com/yahoo/vespa/config/server/application/TenantApplications.java
index 7c669f290d3..5e9e1e8bf33 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/application/TenantApplications.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/application/TenantApplications.java
@@ -390,10 +390,10 @@ public class TenantApplications implements RequestHandler, HostValidator<Applica
@Override
public boolean compatibleWith(Optional<Version> vespaVersion, ApplicationId application) {
if (vespaVersion.isEmpty()) return true;
- Version latestDeployed = applicationMapper.getForVersion(application, Optional.empty(), clock.instant())
- .getVespaVersion();
- boolean compatibleMajor = !incompatibleMajorVersions.value().contains(latestDeployed.getMajor());
- return compatibleMajor || vespaVersion.get().getMajor() == latestDeployed.getMajor();
+ Version wantedVersion = applicationMapper.getForVersion(application, Optional.empty(), clock.instant())
+ .getModel().wantedNodeVersion();
+ boolean compatibleMajor = ! incompatibleMajorVersions.value().contains(wantedVersion.getMajor());
+ return compatibleMajor || vespaVersion.get().getMajor() == wantedVersion.getMajor();
}
@Override
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/application/TenantApplicationsTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/application/TenantApplicationsTest.java
index 2b361e825e5..c95c95750a1 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/application/TenantApplicationsTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/application/TenantApplicationsTest.java
@@ -3,10 +3,12 @@ package com.yahoo.vespa.config.server.application;
import com.yahoo.cloud.config.ConfigserverConfig;
import com.yahoo.component.Version;
+import com.yahoo.component.Vtag;
import com.yahoo.concurrent.InThreadExecutorService;
import com.yahoo.concurrent.StripedExecutor;
import com.yahoo.config.model.NullConfigModelRegistry;
import com.yahoo.config.model.application.provider.FilesApplicationPackage;
+import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.config.provision.ApplicationId;
import com.yahoo.config.provision.TenantName;
import com.yahoo.text.Utf8;
@@ -50,6 +52,7 @@ import java.util.Optional;
import java.util.Set;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.Function;
+import java.util.function.Supplier;
import java.util.stream.IntStream;
import static com.yahoo.vespa.config.server.application.TenantApplications.RemoveApplicationWaiter;
@@ -151,6 +154,19 @@ public class TenantApplicationsTest {
assertEquals(0, repo.activeApplications().size());
}
+ private static ApplicationSet createSet(ApplicationId id, Version version) throws IOException, SAXException {
+ VespaModel model = new VespaModel(new NullConfigModelRegistry(),
+ new DeployState.Builder().wantedNodeVespaVersion(version)
+ .applicationPackage(FilesApplicationPackage.fromFile(new File("src/test/apps/app")))
+ .build());
+ return ApplicationSet.from(new Application(model,
+ new ServerCache(),
+ 1,
+ Version.emptyVersion,
+ MetricUpdater.createTestUpdater(),
+ id));
+ }
+
@Test
public void major_version_compatibility() throws Exception {
InMemoryFlagSource flagSource = new InMemoryFlagSource();
@@ -158,30 +174,21 @@ public class TenantApplicationsTest {
ApplicationId app1 = createApplicationId("myapp");
applications.createApplication(app1);
applications.createPutTransaction(app1, 1).commit();
- VespaModel model = new VespaModel(FilesApplicationPackage.fromFile(new File("src/test/apps/app")));
- Function<Version, ApplicationSet> createApplicationSet = (version) -> {
- return ApplicationSet.from(new Application(model,
- new ServerCache(),
- 1,
- version,
- MetricUpdater.createTestUpdater(),
- app1));
- };
Version deployedVersion0 = Version.fromString("6.1");
- applications.activateApplication(createApplicationSet.apply(deployedVersion0), 1);
+ applications.activateApplication(createSet(app1, deployedVersion0), 1);
assertTrue("Empty version is compatible", applications.compatibleWith(Optional.empty(), app1));
Version nodeVersion0 = Version.fromString("6.0");
assertTrue("Lower version is compatible", applications.compatibleWith(Optional.of(nodeVersion0), app1));
Version deployedVersion1 = Version.fromString("7.1");
- applications.activateApplication(createApplicationSet.apply(deployedVersion1), 1);
+ applications.activateApplication(createSet(app1, deployedVersion1), 1);
assertTrue("New major is compatible", applications.compatibleWith(Optional.of(nodeVersion0), app1));
flagSource.withListFlag(PermanentFlags.INCOMPATIBLE_MAJOR_VERSIONS.id(), List.of(8), Integer.class);
Version deployedVersion2 = Version.fromString("8.1");
- applications.activateApplication(createApplicationSet.apply(deployedVersion2), 1);
+ applications.activateApplication(createSet(app1, deployedVersion2), 1);
assertFalse("New major is incompatible", applications.compatibleWith(Optional.of(nodeVersion0), app1));
Version nodeVersion1 = Version.fromString("8.0");