diff options
author | Martin Polden <mpolden@mpolden.no> | 2021-01-07 14:08:33 +0100 |
---|---|---|
committer | Martin Polden <mpolden@mpolden.no> | 2021-01-07 14:13:41 +0100 |
commit | 0be132bb953d7818c4b25b5415ac98f1a02a8248 (patch) | |
tree | 107a4c983573f2e613a3fa03da3aa498fe07b257 /vespajlib | |
parent | cc1ffd862633370be9abbcd702b48941128d60dd (diff) |
Simplify
Diffstat (limited to 'vespajlib')
-rw-r--r-- | vespajlib/src/main/java/com/yahoo/concurrent/maintenance/JobControl.java | 2 | ||||
-rw-r--r-- | vespajlib/src/main/java/com/yahoo/concurrent/maintenance/Maintainer.java | 16 |
2 files changed, 7 insertions, 11 deletions
diff --git a/vespajlib/src/main/java/com/yahoo/concurrent/maintenance/JobControl.java b/vespajlib/src/main/java/com/yahoo/concurrent/maintenance/JobControl.java index 583337203ab..2a682bcb4db 100644 --- a/vespajlib/src/main/java/com/yahoo/concurrent/maintenance/JobControl.java +++ b/vespajlib/src/main/java/com/yahoo/concurrent/maintenance/JobControl.java @@ -51,7 +51,7 @@ public class JobControl { public void run(String jobSimpleClassName) { var job = startedJobs.get(jobSimpleClassName); if (job == null) throw new IllegalArgumentException("No such job '" + jobSimpleClassName + "'"); - job.lockAndMaintain(); + job.lockAndMaintain(true); } /** Acquire lock for running given job */ diff --git a/vespajlib/src/main/java/com/yahoo/concurrent/maintenance/Maintainer.java b/vespajlib/src/main/java/com/yahoo/concurrent/maintenance/Maintainer.java index 223125d9a3a..2426ca6c5e8 100644 --- a/vespajlib/src/main/java/com/yahoo/concurrent/maintenance/Maintainer.java +++ b/vespajlib/src/main/java/com/yahoo/concurrent/maintenance/Maintainer.java @@ -51,14 +51,7 @@ public abstract class Maintainer implements Runnable { @Override public void run() { - try { - if (jobControl.isActive(name())) { - lockAndMaintain(); - } - } catch (Throwable e) { - log.log(Level.WARNING, this + " failed. Will retry in " + interval.toMinutes() + " minutes", e); - } - log.log(Level.FINE, () -> "Finished " + this.getClass().getSimpleName()); + lockAndMaintain(false); } /** Starts shutdown of this, typically by shutting down executors. {@link #awaitShutdown()} waits for shutdown to complete. */ @@ -91,8 +84,8 @@ public abstract class Maintainer implements Runnable { protected Duration interval() { return interval; } /** Run this while holding the job lock */ - @SuppressWarnings("unused") - public final void lockAndMaintain() { + public final void lockAndMaintain(boolean force) { + if (!force && !jobControl.isActive(name())) return; log.log(Level.FINE, () -> "Running " + this.getClass().getSimpleName()); jobMetrics.recordRunOf(name()); try (var lock = jobControl.lockJob(name())) { @@ -102,9 +95,12 @@ public abstract class Maintainer implements Runnable { // This is fine as we're colliding with a run on another node jobMetrics.recordSuccessOf(name()); } + } catch (Throwable e) { + log.log(Level.WARNING, this + " failed. Will retry in " + interval.toMinutes() + " minutes", e); } finally { jobMetrics.forward(name()); } + log.log(Level.FINE, () -> "Finished " + this.getClass().getSimpleName()); } /** Returns the simple name of this job */ |