aboutsummaryrefslogtreecommitdiffstats
path: root/controller-server
diff options
context:
space:
mode:
authorjonmv <venstad@gmail.com>2023-01-23 14:14:20 +0100
committerjonmv <venstad@gmail.com>2023-01-23 14:14:20 +0100
commit50faf8143c47508441512621f6ca389df21135cb (patch)
tree24d317eb8e0088c29315a49ac8cd9249a06dac21 /controller-server
parentd485fdef78704f15fbd0f988a639622ed73356c6 (diff)
Dedupe on instances when computing confidence
Diffstat (limited to 'controller-server')
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/pkg/ApplicationPackageStream.java9
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/versions/VespaVersion.java19
2 files changed, 11 insertions, 17 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/pkg/ApplicationPackageStream.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/pkg/ApplicationPackageStream.java
index f947926eb9c..f86073cfb25 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/pkg/ApplicationPackageStream.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/pkg/ApplicationPackageStream.java
@@ -1,19 +1,12 @@
package com.yahoo.vespa.hosted.controller.application.pkg;
-import com.yahoo.security.X509CertificateUtils;
-
-import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.FilterInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.UncheckedIOException;
-import java.security.cert.X509Certificate;
-import java.util.ArrayList;
import java.util.HashMap;
-import java.util.List;
import java.util.Map;
-import java.util.Optional;
import java.util.concurrent.atomic.AtomicReference;
import java.util.function.Predicate;
import java.util.function.Supplier;
@@ -22,10 +15,8 @@ import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import java.util.zip.ZipOutputStream;
-import static com.yahoo.security.X509CertificateUtils.certificateListFromPem;
import static java.io.OutputStream.nullOutputStream;
import static java.lang.Math.min;
-import static java.nio.charset.StandardCharsets.UTF_8;
/**
* Wraps a zipped application package stream.
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/versions/VespaVersion.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/versions/VespaVersion.java
index 127e2828732..e9947f3d565 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/versions/VespaVersion.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/versions/VespaVersion.java
@@ -6,6 +6,7 @@ import com.yahoo.config.provision.SystemName;
import com.yahoo.vespa.hosted.controller.Controller;
import com.yahoo.vespa.hosted.controller.application.ApplicationList;
import com.yahoo.vespa.hosted.controller.application.InstanceList;
+import com.yahoo.vespa.hosted.controller.application.TenantAndApplicationId;
import java.time.Instant;
import java.time.ZoneOffset;
@@ -40,7 +41,7 @@ public record VespaVersion(Version version,
.not().upgradingTo(statistics.version());
InstanceList failingOnThis = all.matching(instance -> statistics.failingUpgrades().stream().anyMatch(run -> run.id().application().equals(instance)));
- // 'broken' if any Canary fails
+ // 'broken' if any canary fails
if ( ! failingOnThis.with(UpgradePolicy.canary).isEmpty())
return Confidence.broken;
@@ -53,8 +54,8 @@ public record VespaVersion(Version version,
return Confidence.low;
// 'high' if 90% of all default upgrade applications upgraded
- if (productionOnThis.with(UpgradePolicy.defaultPolicy).size() >=
- all.withProductionDeployment().with(UpgradePolicy.defaultPolicy).size() * 0.9)
+ if (productionOnThis.with(UpgradePolicy.defaultPolicy).groupingBy(TenantAndApplicationId::from).size() >=
+ all.withProductionDeployment().with(UpgradePolicy.defaultPolicy).groupingBy(TenantAndApplicationId::from).size() * 0.9)
return Confidence.high;
return Confidence.normal;
@@ -156,14 +157,16 @@ public record VespaVersion(Version version,
private static boolean nonCanaryApplicationsBroken(Version version,
InstanceList failingOnThis,
InstanceList productionOnThis) {
- InstanceList failingNonCanaries = failingOnThis.startedFailingOn(version).not().with(UpgradePolicy.canary);
- InstanceList productionNonCanaries = productionOnThis.not().with(UpgradePolicy.canary);
+ int failingNonCanaries = failingOnThis.startedFailingOn(version)
+ .not().with(UpgradePolicy.canary)
+ .groupingBy(TenantAndApplicationId::from).size();
+ int productionNonCanaries = productionOnThis.not().with(UpgradePolicy.canary)
+ .groupingBy(TenantAndApplicationId::from).size();
- if (productionNonCanaries.size() + failingNonCanaries.size() == 0) return false;
+ if (productionNonCanaries + failingNonCanaries == 0) return false;
// 'broken' if 6 non-canary was broken by this, and that is at least 5% of all
- int brokenByThisVersion = failingNonCanaries.size();
- return brokenByThisVersion >= 6 && brokenByThisVersion >= productionOnThis.size() * 0.05;
+ return failingNonCanaries >= 6 && failingNonCanaries >= productionOnThis.groupingBy(TenantAndApplicationId::from).size() * 0.05;
}
}