From 759565a40acf17ba4b67834075865d3b76e8e32e Mon Sep 17 00:00:00 2001 From: jonmv Date: Mon, 3 Oct 2022 09:05:25 +0200 Subject: Releases in public imply high confidence --- .../vespa/hosted/controller/ApplicationController.java | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'controller-server/src/main/java/com') 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 92ebc5b7177..19775ef420d 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 @@ -391,15 +391,23 @@ public class ApplicationController { .map(VespaVersion::versionNumber) .filter(systemCompatible) .max(naturalOrder()); - if (nonBroken.isPresent()) return nonBroken.get(); - // Fall back to the newest, system-compatible version with unknown confidence. + // Fall back to the newest, system-compatible version with unknown confidence. For public systems, this implies high confidence. Set knownVersions = versionStatus.versions().stream().map(VespaVersion::versionNumber).collect(toSet()); Optional unknown = controller.mavenRepository().metadata().versions().stream() .filter(version -> ! knownVersions.contains(version)) .filter(systemCompatible) .max(naturalOrder()); - if (unknown.isPresent()) return unknown.get(); + + if (nonBroken.isPresent()) { + if (controller.system().isPublic() && unknown.isPresent() && unknown.get().isAfter(nonBroken.get())) + return unknown.get(); + + return nonBroken.get(); + } + + if (unknown.isPresent()) + return unknown.get(); throw new IllegalArgumentException("no suitable, released compile version exists" + (wantedMajor.isPresent() ? " for specified major: " + wantedMajor.getAsInt() : "")); -- cgit v1.2.3