diff options
author | Jon Marius Venstad <jvenstad@yahoo-inc.com> | 2018-09-25 11:27:52 +0200 |
---|---|---|
committer | Jon Marius Venstad <jvenstad@yahoo-inc.com> | 2018-09-25 11:27:52 +0200 |
commit | 5bb563d6e999dcb03fb8f8875b885afd3bee4de1 (patch) | |
tree | 193d442cd26cf274b55678ee065a520cbb4fcd70 /controller-server | |
parent | 74ef29c8b1b493a80b4a582acf90b0dbc5953f85 (diff) |
Ignore job reports for jobs we did not trigger
Diffstat (limited to 'controller-server')
3 files changed, 19 insertions, 3 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTrigger.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTrigger.java index 5086cebc1cf..7bc04e2ffb4 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTrigger.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTrigger.java @@ -114,9 +114,14 @@ public class DeploymentTrigger { } } else { - triggering = application.get().deploymentJobs().statusOf(report.jobType()).flatMap(JobStatus::lastTriggered) + triggering = application.get().deploymentJobs().statusOf(report.jobType()) + .filter(job -> job.lastTriggered().isPresent() + && job.lastCompleted() + .map(completion -> ! completion.at().isAfter(job.lastTriggered().get().at())) + .orElse(true)) .orElseThrow(() -> new IllegalStateException("Notified of completion of " + report.jobType().jobName() + " for " + - report.applicationId() + ", but that has neither been triggered nor deployed")); + report.applicationId() + ", but that has neither been triggered nor deployed")) + .lastTriggered().get(); } application = application.withJobCompletion(report.projectId(), report.jobType(), diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiTest.java index 83605c31b42..f2e105f2c31 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiTest.java +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiTest.java @@ -952,8 +952,15 @@ public class ApplicationApiTest extends ControllerContainerTest { controllerTester.deploy(app, applicationPackage, TEST_ZONE); job.type(JobType.systemTest).submit(); - // Notifying about unknown job fails + // Notifying about job started not by the controller fails Request request = request("/application/v4/tenant/tenant1/application/application1/jobreport", POST) + .data(asJson(job.type(JobType.systemTest).report())) + .userIdentity(HOSTED_VESPA_OPERATOR) + .get(); + tester.assertResponse(request, new File("jobreport-unexpected-system-test-completion.json"), 400); + + // Notifying about unknown job fails + request = request("/application/v4/tenant/tenant1/application/application1/jobreport", POST) .data(asJson(job.type(JobType.productionUsEast3).report())) .userIdentity(HOSTED_VESPA_OPERATOR) .get(); diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/jobreport-unexpected-system-test-completion.json b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/jobreport-unexpected-system-test-completion.json new file mode 100644 index 00000000000..513cfb754ae --- /dev/null +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/jobreport-unexpected-system-test-completion.json @@ -0,0 +1,4 @@ +{ + "error-code": "BAD_REQUEST", + "message": "Notified of completion of system-test for tenant1.application1, but that has neither been triggered nor deployed" +} |