summaryrefslogtreecommitdiffstats
path: root/vespajlib
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2021-01-07 14:08:33 +0100
committerMartin Polden <mpolden@mpolden.no>2021-01-07 14:13:41 +0100
commit0be132bb953d7818c4b25b5415ac98f1a02a8248 (patch)
tree107a4c983573f2e613a3fa03da3aa498fe07b257 /vespajlib
parentcc1ffd862633370be9abbcd702b48941128d60dd (diff)
Simplify
Diffstat (limited to 'vespajlib')
-rw-r--r--vespajlib/src/main/java/com/yahoo/concurrent/maintenance/JobControl.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/concurrent/maintenance/Maintainer.java16
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 */