diff options
author | Jon Marius Venstad <venstad@gmail.com> | 2022-03-14 18:47:40 +0100 |
---|---|---|
committer | Jon Marius Venstad <venstad@gmail.com> | 2022-03-14 18:47:40 +0100 |
commit | 67be6e1ab27b5b2d51a6f68d394161501c14b02d (patch) | |
tree | 8da4020e00db916df44910ccd428303ebea2295c /configserver | |
parent | de2dbd0677343d0deaae85ed62b4a7158dab6553 (diff) |
Use VersionCompatibility in configserver and controller, and tests
Diffstat (limited to 'configserver')
2 files changed, 6 insertions, 5 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 5e9e1e8bf33..02b48c9d626 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 @@ -3,6 +3,7 @@ package com.yahoo.vespa.config.server.application; import com.yahoo.cloud.config.ConfigserverConfig; import com.yahoo.component.Version; +import com.yahoo.component.VersionCompatibility; import com.yahoo.concurrent.StripedExecutor; import com.yahoo.config.FileReference; import com.yahoo.config.provision.ApplicationId; @@ -74,7 +75,7 @@ public class TenantApplications implements RequestHandler, HostValidator<Applica private final Clock clock; private final TenantFileSystemDirs tenantFileSystemDirs; private final ConfigserverConfig configserverConfig; - private final ListFlag<Integer> incompatibleMajorVersions; + private final ListFlag<String> incompatibleVersions; public TenantApplications(TenantName tenant, Curator curator, StripedExecutor<TenantName> zkWatcherExecutor, ExecutorService zkCacheExecutor, Metrics metrics, ReloadListener reloadListener, @@ -95,7 +96,7 @@ public class TenantApplications implements RequestHandler, HostValidator<Applica this.tenantFileSystemDirs = tenantFileSystemDirs; this.clock = clock; this.configserverConfig = configserverConfig; - this.incompatibleMajorVersions = PermanentFlags.INCOMPATIBLE_MAJOR_VERSIONS.bindTo(flagSource); + this.incompatibleVersions = PermanentFlags.INCOMPATIBLE_VERSIONS.bindTo(flagSource); } /** The curator backed ZK storage of this. */ @@ -392,8 +393,8 @@ public class TenantApplications implements RequestHandler, HostValidator<Applica if (vespaVersion.isEmpty()) return true; 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(); + return VersionCompatibility.fromVersionList(incompatibleVersions.value()) + .accept(vespaVersion.get(), wantedVersion); } @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 c95c95750a1..93637536182 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 @@ -186,7 +186,7 @@ public class TenantApplicationsTest { 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); + flagSource.withListFlag(PermanentFlags.INCOMPATIBLE_VERSIONS.id(), List.of("8"), String.class); Version deployedVersion2 = Version.fromString("8.1"); applications.activateApplication(createSet(app1, deployedVersion2), 1); assertFalse("New major is incompatible", applications.compatibleWith(Optional.of(nodeVersion0), app1)); |