summaryrefslogtreecommitdiffstats
path: root/controller-server
diff options
context:
space:
mode:
authorjonmv <venstad@gmail.com>2022-10-20 10:06:47 +0200
committerjonmv <venstad@gmail.com>2022-10-20 10:08:16 +0200
commit5ebf9847685fb6ee4879164032cfd244b5a2ca7f (patch)
treeaa7172e4bc40ebb0f9587712bce13b94f12a2a1e /controller-server
parent0f2271b74221560e61063c13faf92d141e1991c0 (diff)
Allow confidence to change from normal to high for older versions
Diffstat (limited to 'controller-server')
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/versions/DeploymentStatistics.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/versions/VersionStatus.java19
2 files changed, 11 insertions, 10 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/versions/DeploymentStatistics.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/versions/DeploymentStatistics.java
index e3077cb232f..760ae894e37 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/versions/DeploymentStatistics.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/versions/DeploymentStatistics.java
@@ -71,7 +71,7 @@ public record DeploymentStatistics(Version version,
JobList failing = status.jobs().failingHard();
// Add all unsuccessful runs for failing production jobs as any run may have resulted in an incomplete deployment
- // where a subset of nodes have upgraded.
+ // where a subset of nodes has upgraded.
failing.not().failingApplicationChange()
.production()
.mapToList(JobStatus::runs)
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/versions/VersionStatus.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/versions/VersionStatus.java
index 4002da4699a..607b2a1fc1d 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/versions/VersionStatus.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/versions/VersionStatus.java
@@ -233,16 +233,17 @@ public record VersionStatus(List<VespaVersion> versions) {
// Compute confidence
if (!confidenceIsOverridden) {
- // Always compute confidence for system and controller
- if (isSystemVersion || isControllerVersion) {
- confidence = VespaVersion.confidenceFrom(statistics, controller, versionStatus);
+ Confidence newConfidence = VespaVersion.confidenceFrom(statistics, controller, versionStatus);
+ Confidence oldConfidence = Optional.ofNullable(versionStatus.version(statistics.version()))
+ .map(VespaVersion::confidence)
+ .orElse(newConfidence);
+ // Always update confidence for system and controller
+ // Also allow older versions to transition from normal to high confidence
+ if (isSystemVersion || isControllerVersion || oldConfidence == Confidence.normal && newConfidence == Confidence.high) {
+ confidence = newConfidence;
} else {
- // This is an older version, so we preserve the existing confidence, if any
- confidence = versionStatus.versions().stream()
- .filter(v -> statistics.version().equals(v.versionNumber()))
- .map(VespaVersion::confidence)
- .findFirst()
- .orElseGet(() -> VespaVersion.confidenceFrom(statistics, controller, versionStatus));
+ // Otherwise, this is an older version, so we preserve the existing confidence, if any
+ confidence = oldConfidence;
}
}