diff options
author | Jon Marius Venstad <venstad@gmail.com> | 2021-06-29 13:00:26 +0200 |
---|---|---|
committer | Jon Marius Venstad <venstad@gmail.com> | 2021-06-29 13:00:26 +0200 |
commit | c783759401f2d2f22bb55ebfc801798fb0e1b492 (patch) | |
tree | eae5f29cde781292c760354160970bed77049f3b /controller-server/src | |
parent | df17f9cf144d7e46b5d8e7d339824b1d1e5b5540 (diff) |
Avoid deployments on newer version than system, when major is specified
Diffstat (limited to 'controller-server/src')
-rw-r--r-- | controller-server/src/main/java/com/yahoo/vespa/hosted/controller/ApplicationController.java | 14 |
1 files changed, 9 insertions, 5 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 ff10f3b77ca..b7079e51285 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 @@ -67,6 +67,7 @@ import com.yahoo.vespa.hosted.controller.support.access.SupportAccessGrant; import com.yahoo.vespa.hosted.controller.tenant.AthenzTenant; import com.yahoo.vespa.hosted.controller.tenant.CloudTenant; import com.yahoo.vespa.hosted.controller.tenant.Tenant; +import com.yahoo.vespa.hosted.controller.versions.VersionStatus; import com.yahoo.vespa.hosted.controller.versions.VespaVersion; import com.yahoo.yolean.Exceptions; @@ -868,12 +869,15 @@ public class ApplicationController { throw new IllegalArgumentException("Not allowed to launch Athenz service " + athenzService.getFullName()); } - /** Returns the latest known version within the given major. */ + /** Returns the latest known version within the given major, which is not newer than the system version. */ public Optional<Version> lastCompatibleVersion(int targetMajorVersion) { - return controller.readVersionStatus().versions().stream() - .map(VespaVersion::versionNumber) - .filter(version -> version.getMajor() == targetMajorVersion) - .max(naturalOrder()); + VersionStatus versions = controller.readVersionStatus(); + Version systemVersion = controller.systemVersion(versions); + return versions.versions().stream() + .map(VespaVersion::versionNumber) + .filter(version -> version.getMajor() == targetMajorVersion) + .filter(version -> ! version.isAfter(systemVersion)) + .max(naturalOrder()); } /** Extract deployment warnings metric from deployment result */ |