summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJon Marius Venstad <jvenstad@yahoo-inc.com>2018-04-23 14:34:15 +0200
committerJon Marius Venstad <jvenstad@yahoo-inc.com>2018-04-23 14:34:15 +0200
commit531d10e0fe8cf36f270aaa97c67d611e183ba9e1 (patch)
treef6f52c82d3a74f60130b663ce4a6f32fe8fb8b0a
parenta3c3e97c0a70b6640ccb7937f873cd20cfa75da2 (diff)
Reintroduce delay before first production job
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTrigger.java5
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTriggerTest.java8
2 files changed, 11 insertions, 2 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 21f37486470..25a1d19f1e1 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
@@ -95,7 +95,7 @@ public class DeploymentTrigger {
* Called each time a job completes (successfully or not) to record information used when deciding what to trigger.
*/
public void notifyOfCompletion(JobReport report) {
- log.log(LogLevel.INFO, String.format("Got notified of %s for %s of %s (%d).",
+ log.log(LogLevel.DEBUG, String.format("Got notified of %s for %s of %s (%d).",
report.jobError().map(JobError::toString).orElse("success"),
report.jobType(),
report.applicationId(),
@@ -277,7 +277,8 @@ public class DeploymentTrigger {
: application.deploymentSpec().steps();
List<Step> productionSteps = steps.stream().filter(step -> step.deploysTo(prod) || step.zones().isEmpty()).collect(toList());
- Optional<Instant> completedAt = Optional.of(Instant.EPOCH); // Delays before first production job are ignored.
+ Optional<Instant> completedAt = application.deploymentJobs().statusOf(stagingTest)
+ .flatMap(JobStatus::lastSuccess).map(JobRun::at);
String reason = "New change available";
List<Job> testJobs = null;
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTriggerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTriggerTest.java
index fc4b8cb9621..b2c109b1b2f 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTriggerTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTriggerTest.java
@@ -120,6 +120,7 @@ public class DeploymentTriggerTest {
ApplicationPackage applicationPackage = new ApplicationPackageBuilder()
.environment(Environment.prod)
+ .delay(Duration.ofSeconds(30))
.region("us-west-1")
.delay(Duration.ofMinutes(2))
.delay(Duration.ofMinutes(2)) // Multiple delays are summed up
@@ -134,6 +135,13 @@ public class DeploymentTriggerTest {
tester.deployAndNotify(application, applicationPackage, true, JobType.systemTest);
tester.deployAndNotify(application, applicationPackage, true, JobType.stagingTest);
tester.deploymentTrigger().triggerReadyJobs();
+
+ // No jobs have started yet, as 30 seconds have not yet passed.
+ assertEquals(0, mockBuildService.jobs().size());
+ tester.clock().advance(Duration.ofSeconds(30));
+ tester.deploymentTrigger().triggerReadyJobs();
+
+ // 30 seconds later, the first jobs may trigger.
assertEquals(1, mockBuildService.jobs().size());
tester.assertRunning(application.id(), productionUsWest1);