summaryrefslogtreecommitdiffstats
path: root/vespajlib/src/main/java/com/yahoo/concurrent
diff options
context:
space:
mode:
Diffstat (limited to 'vespajlib/src/main/java/com/yahoo/concurrent')
-rw-r--r--vespajlib/src/main/java/com/yahoo/concurrent/maintenance/JobMetrics.java23
-rw-r--r--vespajlib/src/main/java/com/yahoo/concurrent/maintenance/Maintainer.java18
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());