diff options
Diffstat (limited to 'vespajlib/src/main/java/com/yahoo/concurrent')
-rw-r--r-- | vespajlib/src/main/java/com/yahoo/concurrent/maintenance/JobMetrics.java | 23 | ||||
-rw-r--r-- | vespajlib/src/main/java/com/yahoo/concurrent/maintenance/Maintainer.java | 18 |
2 files changed, 10 insertions, 31 deletions
diff --git a/vespajlib/src/main/java/com/yahoo/concurrent/maintenance/JobMetrics.java b/vespajlib/src/main/java/com/yahoo/concurrent/maintenance/JobMetrics.java index 73a5dc77743..da5a596edea 100644 --- a/vespajlib/src/main/java/com/yahoo/concurrent/maintenance/JobMetrics.java +++ b/vespajlib/src/main/java/com/yahoo/concurrent/maintenance/JobMetrics.java @@ -10,29 +10,10 @@ import java.util.concurrent.ConcurrentHashMap; */ public abstract class JobMetrics { - private final ConcurrentHashMap<String, Long> incompleteRuns = new ConcurrentHashMap<>(); - - /** Record starting of a run of a job */ - public void starting(String job) { - incompleteRuns.merge(job, 1L, Long::sum); - } - - /** Record completion of given job */ - public void recordCompletionOf(String job) { - incompleteRuns.put(job, 0L); - } - /** * Records completion of a run of a job. - * This is guaranteed to always be called once whenever starting has been called. + * This is guaranteed to always be called once after each maintainer run. */ - public void completed(String job, double successFactor) { - Long incompleteRuns = this.incompleteRuns.get(job); - if (incompleteRuns != null) { - recordCompletion(job, incompleteRuns, successFactor); - } - } - - protected abstract void recordCompletion(String job, Long incompleteRuns, double successFactor); + public abstract void completed(String job, double successFactor); } 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 2a9e6dda6b6..3a5c7e3421d 100644 --- a/vespajlib/src/main/java/com/yahoo/concurrent/maintenance/Maintainer.java +++ b/vespajlib/src/main/java/com/yahoo/concurrent/maintenance/Maintainer.java @@ -104,21 +104,19 @@ public abstract class Maintainer implements Runnable { public final void lockAndMaintain(boolean force) { if (!force && !jobControl.isActive(name())) return; log.log(Level.FINE, () -> "Running " + this.getClass().getSimpleName()); - jobMetrics.starting(name()); + double successFactor = 0; try (var lock = jobControl.lockJob(name())) { successFactor = maintain(); - if (successFactor > 0.0) - jobMetrics.recordCompletionOf(name()); - } catch (UncheckedTimeoutException e) { - if (ignoreCollision) { - jobMetrics.recordCompletionOf(name()); - } else { + } + catch (UncheckedTimeoutException e) { + if ( ! ignoreCollision) log.log(Level.WARNING, this + " collided with another run. Will retry in " + interval); - } - } catch (Throwable e) { + } + catch (Throwable e) { log.log(Level.WARNING, this + " failed. Will retry in " + interval, e); - } finally { + } + finally { jobMetrics.completed(name(), successFactor); } log.log(Level.FINE, () -> "Finished " + this.getClass().getSimpleName()); |