summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJon Marius Venstad <jvenstad@yahoo-inc.com>2018-08-13 15:46:22 +0200
committerJon Marius Venstad <jvenstad@yahoo-inc.com>2018-08-13 15:46:22 +0200
commit3b0ed903e49d305111bb48dcd8605960c08939e9 (patch)
tree3744dc2a9c5b7d9eefea628c6036a2d50f56dcbc
parent000665e4e9d976c61c89f347b0d0ed92ff22a390 (diff)
Add abortion after 1 day, on job levle
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/JobRunner.java3
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/JobRunnerTest.java17
2 files changed, 20 insertions, 0 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/JobRunner.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/JobRunner.java
index 99f222f58d2..dd89644b580 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/JobRunner.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/JobRunner.java
@@ -25,6 +25,7 @@ import java.util.logging.Logger;
*/
public class JobRunner extends Maintainer {
+ static final Duration jobTimeout = Duration.ofDays(1);
private static final Logger log = Logger.getLogger(JobRunner.class.getName());
private final JobController jobs;
@@ -67,6 +68,8 @@ public class JobRunner extends Maintainer {
steps.forEach(step -> executors.execute(() -> advance(run.id(), step)));
if (steps.isEmpty())
jobs.finish(run.id());
+ else if (run.start().isBefore(controller().clock().instant().minus(jobTimeout)))
+ jobs.abort(run.id());
}
/** Attempts to advance the status of the given step, for the given run. */
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/JobRunnerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/JobRunnerTest.java
index ee1567dae11..1ec07025812 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/JobRunnerTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/JobRunnerTest.java
@@ -226,6 +226,23 @@ public class JobRunnerTest {
assertEquals(Optional.empty(), jobs.last(id, systemTest));
}
+ @Test
+ public void timeout() {
+ DeploymentTester tester = new DeploymentTester();
+ JobController jobs = tester.controller().jobController();
+ Map<Step, Status> outcomes = new EnumMap<>(Step.class);
+ JobRunner runner = new JobRunner(tester.controller(), Duration.ofDays(1), new JobControl(tester.controller().curator()),
+ inThreadExecutor(), mappedRunner(outcomes));
+
+ ApplicationId id = tester.createApplication("real", "tenant", 1, 1L).id();
+ jobs.submit(id, versions.targetApplication().source().get(), new byte[0], new byte[0]);
+
+ jobs.start(id, systemTest, versions);
+ tester.clock().advance(JobRunner.jobTimeout.plus(Duration.ofSeconds(1)));
+ runner.run();
+ assertTrue(jobs.last(id, systemTest).get().isAborted());
+ }
+
public static ExecutorService inThreadExecutor() {
return new AbstractExecutorService() {
AtomicBoolean shutDown = new AtomicBoolean(false);