summaryrefslogtreecommitdiffstats
path: root/controller-server
diff options
context:
space:
mode:
authorJon Marius Venstad <jvenstad@yahoo-inc.com>2018-09-25 11:27:52 +0200
committerJon Marius Venstad <jvenstad@yahoo-inc.com>2018-09-25 11:27:52 +0200
commit5bb563d6e999dcb03fb8f8875b885afd3bee4de1 (patch)
tree193d442cd26cf274b55678ee065a520cbb4fcd70 /controller-server
parent74ef29c8b1b493a80b4a582acf90b0dbc5953f85 (diff)
Ignore job reports for jobs we did not trigger
Diffstat (limited to 'controller-server')
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTrigger.java9
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiTest.java9
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/jobreport-unexpected-system-test-completion.json4
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"
+}