diff options
author | Martin Polden <mpolden@mpolden.no> | 2018-02-26 13:14:15 +0100 |
---|---|---|
committer | Martin Polden <mpolden@mpolden.no> | 2018-02-26 14:12:13 +0100 |
commit | 48ff9e9a52610b4c60e3614e0e0fcfd713c8af0a (patch) | |
tree | a8b7bb74a2135aae1f48fc83c666b94bc0d345c6 | |
parent | 37809447176a8664856002de7ad11beba748a086 (diff) |
Remove ignore confidence feature
7 files changed, 5 insertions, 90 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/Upgrader.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/Upgrader.java index 75f348904dd..e492ec46081 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/Upgrader.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/Upgrader.java @@ -124,18 +124,4 @@ public class Upgrader extends Maintainer { curator.writeUpgradesPerMinute(n); } - /** - * Returns whether to ignore confidence calculations when upgrading - */ - public boolean ignoreConfidence() { - return curator.readIgnoreConfidence(); - } - - /** - * Controls whether to ignore confidence calculations or not - */ - public void ignoreConfidence(boolean value) { - curator.writeIgnoreConfidence(value); - } - } diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/CuratorDb.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/CuratorDb.java index a3bb191fc38..e5370036ed3 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/CuratorDb.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/CuratorDb.java @@ -164,20 +164,6 @@ public class CuratorDb { transaction.commit(); } - public boolean readIgnoreConfidence() { - Optional<byte[]> value = curator.getData(ignoreConfidencePath()); - if (! value.isPresent() || value.get().length == 0) { - return false; // Default if value has never been written - } - return ByteBuffer.wrap(value.get()).getInt() == 1; - } - - public void writeIgnoreConfidence(boolean value) { - NestedTransaction transaction = new NestedTransaction(); - curator.set(ignoreConfidencePath(), ByteBuffer.allocate(Integer.BYTES).putInt(value ? 1 : 0).array()); - transaction.commit(); - } - public void writeVersionStatus(VersionStatus status) { VersionStatusSerializer serializer = new VersionStatusSerializer(); NestedTransaction transaction = new NestedTransaction(); @@ -264,10 +250,6 @@ public class CuratorDb { return root.append("upgrader").append("upgradesPerMinute"); } - private Path ignoreConfidencePath() { - return root.append("upgrader").append("ignoreConfidence"); - } - private Path versionStatusPath() { return root.append("versionStatus"); } private Path provisionStatePath() { diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/controller/ControllerApiHandler.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/controller/ControllerApiHandler.java index a9eaaf4048c..2a6c1f3da52 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/controller/ControllerApiHandler.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/controller/ControllerApiHandler.java @@ -100,15 +100,12 @@ public class ControllerApiHandler extends LoggingRequestHandler { private HttpResponse configureUpgrader(HttpRequest request) { String upgradesPerMinuteField = "upgradesPerMinute"; - String ignoreConfidenceField = "ignoreConfidence"; byte[] jsonBytes = toJsonBytes(request.getData()); Inspector inspect = SlimeUtils.jsonToSlime(jsonBytes).get(); Upgrader upgrader = maintenance.upgrader(); if (inspect.field(upgradesPerMinuteField).valid()) { upgrader.setUpgradesPerMinute(inspect.field(upgradesPerMinuteField).asDouble()); - } else if (inspect.field(ignoreConfidenceField).valid()) { - upgrader.ignoreConfidence(inspect.field(ignoreConfidenceField).asBool()); } else { return ErrorResponse.badRequest("Unable to configure upgrader with data in request: '" + Utf8.toString(jsonBytes) + "'"); diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/controller/UpgraderResponse.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/controller/UpgraderResponse.java index 0e6e0030ecf..d6b791d4db0 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/controller/UpgraderResponse.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/controller/UpgraderResponse.java @@ -27,7 +27,6 @@ public class UpgraderResponse extends HttpResponse { Slime slime = new Slime(); Cursor root = slime.setObject(); root.setDouble("upgradesPerMinute", upgrader.upgradesPerMinute()); - root.setBool("ignoreConfidence", upgrader.ignoreConfidence()); new JsonFormat(true).encode(outputStream, slime); } 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 3377c397163..1aa94507b61 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,7 +6,6 @@ import com.yahoo.component.Version; import com.yahoo.component.Vtag; import com.yahoo.vespa.hosted.controller.Controller; import com.yahoo.vespa.hosted.controller.application.ApplicationList; -import com.yahoo.vespa.hosted.controller.persistence.CuratorDb; import java.time.Instant; import java.util.Collection; @@ -57,7 +56,7 @@ public class VespaVersion implements Comparable<VespaVersion> { return Confidence.broken; // 'broken' if 4 non-canary was broken by this, and that is at least 10% of all - if (nonCanaryApplicationsBroken(statistics.version(), failingOnThis, productionOnThis, controller.curator())) + if (nonCanaryApplicationsBroken(statistics.version(), failingOnThis, productionOnThis)) return Confidence.broken; // 'low' unless all canary applications are upgraded @@ -143,12 +142,11 @@ public class VespaVersion implements Comparable<VespaVersion> { private static boolean nonCanaryApplicationsBroken(Version version, ApplicationList failingOnThis, - ApplicationList productionOnThis, - CuratorDb curator) { + ApplicationList productionOnThis) { ApplicationList failingNonCanaries = failingOnThis.without(UpgradePolicy.canary).startedFailingOn(version); ApplicationList productionNonCanaries = productionOnThis.without(UpgradePolicy.canary); - if (productionNonCanaries.size() + failingNonCanaries.size() == 0 || curator.readIgnoreConfidence()) return false; + if (productionNonCanaries.size() + failingNonCanaries.size() == 0) return false; // 'broken' if 4 non-canary was broken by this, and that is at least 10% of all int brokenByThisVersion = failingNonCanaries.size(); diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/controller/ControllerApiTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/controller/ControllerApiTest.java index c7128bb4cfc..984e184cdcf 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/controller/ControllerApiTest.java +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/controller/ControllerApiTest.java @@ -47,7 +47,7 @@ public class ControllerApiTest extends ControllerContainerTest { // Get current configuration tester.assertResponse(authenticatedRequest("http://localhost:8080/controller/v1/jobs/upgrader", new byte[0], Request.Method.GET), - "{\"upgradesPerMinute\":0.5,\"ignoreConfidence\":false}", + "{\"upgradesPerMinute\":0.5}", 200); // Set invalid configuration @@ -66,13 +66,7 @@ public class ControllerApiTest extends ControllerContainerTest { // Patch configuration tester.assertResponse( hostedOperatorRequest("http://localhost:8080/controller/v1/jobs/upgrader", "{\"upgradesPerMinute\":42.0}", Request.Method.PATCH), - "{\"upgradesPerMinute\":42.0,\"ignoreConfidence\":false}", - 200); - - // Patch configuration - tester.assertResponse( - hostedOperatorRequest("http://localhost:8080/controller/v1/jobs/upgrader", "{\"ignoreConfidence\":true}", Request.Method.PATCH), - "{\"upgradesPerMinute\":42.0,\"ignoreConfidence\":true}", + "{\"upgradesPerMinute\":42.0}", 200); } diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/versions/VersionStatusTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/versions/VersionStatusTest.java index 868ea50128d..5ccd1035037 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/versions/VersionStatusTest.java +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/versions/VersionStatusTest.java @@ -242,47 +242,6 @@ public class VersionStatusTest { assertEquals("5.3", versions.get(2).versionNumber().toString()); } - @Test - public void testIgnoreConfidence() { - DeploymentTester tester = new DeploymentTester(); - - Version version0 = new Version("5.0"); - tester.upgradeSystem(version0); - - // Setup applications - all running on version0 - Application canary0 = tester.createAndDeploy("canary0", 1, "canary"); - Application canary1 = tester.createAndDeploy("canary1", 2, "canary"); - Application default0 = tester.createAndDeploy("default0", 3, "default"); - Application default1 = tester.createAndDeploy("default1", 4, "default"); - Application default2 = tester.createAndDeploy("default2", 5, "default"); - Application default3 = tester.createAndDeploy("default3", 6, "default"); - Application default4 = tester.createAndDeploy("default4", 7, "default"); - - // New version is released - Version version1 = new Version("5.1"); - tester.upgradeSystem(version1); - - // All canaries upgrade successfully, 1 default apps ok, 3 default apps fail - tester.completeUpgrade(canary0, version1, "canary"); - tester.completeUpgrade(canary1, version1, "canary"); - tester.upgradeSystem(version1); - tester.completeUpgrade(default0, version1, "default"); - tester.completeUpgradeWithError(default1, version1, "default", stagingTest); - tester.completeUpgradeWithError(default2, version1, "default", stagingTest); - tester.completeUpgradeWithError(default3, version1, "default", stagingTest); - tester.completeUpgradeWithError(default4, version1, "default", stagingTest); - tester.updateVersionStatus(); - assertEquals("Canaries have upgraded, 1 of 4 default apps failing: Broken", - Confidence.broken, confidence(tester.controller(), version1)); - - // Same as above, but ignore confidence calculations, will force normal confidence - tester.controllerTester().curator().writeIgnoreConfidence(true); - tester.updateVersionStatus(); - assertEquals("Canaries have upgraded, 1 of 4 default apps failing, but confidence ignored: Low", - Confidence.normal, confidence(tester.controller(), version1)); - tester.controllerTester().curator().writeIgnoreConfidence(false); - } - private Confidence confidence(Controller controller, Version version) { return controller.versionStatus().versions().stream() .filter(v -> v.statistics().version().equals(version)) |