summaryrefslogtreecommitdiffstats
path: root/controller-server/src
diff options
context:
space:
mode:
authorJon Marius Venstad <venstad@gmail.com>2021-06-29 13:00:26 +0200
committerJon Marius Venstad <venstad@gmail.com>2021-06-29 13:00:26 +0200
commitc783759401f2d2f22bb55ebfc801798fb0e1b492 (patch)
treeeae5f29cde781292c760354160970bed77049f3b /controller-server/src
parentdf17f9cf144d7e46b5d8e7d339824b1d1e5b5540 (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.java14
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 */