diff options
author | Morten Tokle <morten.tokle@gmail.com> | 2017-09-25 11:34:02 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-09-25 11:34:02 +0200 |
commit | 835d135a7c4ac42d7c4d6017c0da6a6684908d9d (patch) | |
tree | 62fbdfbe8dee31f3fd072c8c58a66ebd36858bb8 | |
parent | 74efde89bb7ed5b5f6547108c70c1081d339709f (diff) | |
parent | 1de214dbf1cbb9bb134dadc6ae22967818c2151a (diff) |
Merge pull request #3512 from vespa-engine/mpolden/ignore-pr-in-failure-redeployer
Make FailureRedeployer ignore PR instances
3 files changed, 54 insertions, 1 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/FailureRedeployer.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/FailureRedeployer.java index 6c57c9423ff..2c048bfa3ce 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/FailureRedeployer.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/FailureRedeployer.java @@ -3,6 +3,7 @@ package com.yahoo.vespa.hosted.controller.maintenance; import com.yahoo.vespa.hosted.controller.Application; import com.yahoo.vespa.hosted.controller.Controller; +import com.yahoo.vespa.hosted.controller.application.ApplicationList; import com.yahoo.vespa.hosted.controller.application.JobStatus; import java.time.Duration; @@ -15,6 +16,7 @@ import java.util.Optional; * Attempts redeployment of failed jobs and deployments. * * @author bratseth + * @author mpolden */ public class FailureRedeployer extends Maintainer { @@ -26,7 +28,9 @@ public class FailureRedeployer extends Maintainer { @Override public void maintain() { - List<Application> applications = controller().applications().asList(); + List<Application> applications = ApplicationList.from(controller().applications().asList()) + .notPullRequest() + .asList(); retryFailingJobs(applications); retryStuckJobs(applications); } diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/FailureRedeployerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/FailureRedeployerTest.java index 38ddd8a4a1b..fd7a3605766 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/FailureRedeployerTest.java +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/FailureRedeployerTest.java @@ -296,4 +296,30 @@ public class FailureRedeployerTest { assertFalse("Change deployed", tester.application(application.id()).deploying().isPresent()); } + @Test + public void ignoresPullRequestInstances() throws Exception { + DeploymentTester tester = new DeploymentTester(); + tester.controllerTester().getZoneRegistryMock().setSystem(SystemName.cd); + + // Current system version, matches version in test data + Version version = Version.fromString("6.42.1"); + tester.configServerClientMock().setDefaultConfigServerVersion(version); + tester.updateVersionStatus(version); + assertEquals(version, tester.controller().versionStatus().systemVersion().get().versionNumber()); + + // Load test data data + ApplicationSerializer serializer = new ApplicationSerializer(); + byte[] json = Files.readAllBytes(Paths.get("src/test/java/com/yahoo/vespa/hosted/controller/maintenance/testdata/pr-instance-with-dead-locked-job.json")); + Slime slime = SlimeUtils.jsonToSlime(json); + Application application = serializer.fromSlime(slime); + + try (Lock lock = tester.controller().applications().lock(application.id())) { + tester.controller().applications().store(application, lock); + } + + // Failure redeployer does not restart deployment + tester.failureRedeployer().maintain(); + assertTrue("No jobs scheduled", tester.buildSystem().jobs().isEmpty()); + } + } diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/testdata/pr-instance-with-dead-locked-job.json b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/testdata/pr-instance-with-dead-locked-job.json new file mode 100644 index 00000000000..32d34edd576 --- /dev/null +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/testdata/pr-instance-with-dead-locked-job.json @@ -0,0 +1,23 @@ +{ + "id": "tenant1:app1:default-pr1", + "deploymentSpecField": "<deployment version='1.0'>\n <test />\n <staging />\n <prod global-service-id=\"default\">\n <region active=\"true\">us-central-1</region>\n </prod>\n</deployment>\n", + "validationOverrides": "<deployment version='1.0'/>", + "deployments": [], + "deploymentJobs": { + "projectId": 0, + "jobStatus": [ + { + "jobType": "system-test", + "lastTriggered": { + "version": "6.42.1", + "revision": { + "applicationPackageHash": "dead" + }, + "upgrade": false, + "at": 1499075576005 + } + } + ] + }, + "outstandingChangeField": false +} |