summaryrefslogtreecommitdiffstats
path: root/vespajlib/src/main/java/com/yahoo/concurrent/maintenance/JobMetrics.java
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@gmail.com>2021-06-06 11:05:00 +0200
committerJon Bratseth <bratseth@gmail.com>2021-06-06 11:05:00 +0200
commit251f60541439d0661c2aec5344c3dcc5b31686a0 (patch)
tree20926701f5c05986ff397428a515211cee25d089 /vespajlib/src/main/java/com/yahoo/concurrent/maintenance/JobMetrics.java
parentec755c18cfe7ef1c2ffbb1f9b78a857746bf9484 (diff)
Revert "Revert "Emit a success factor from maintainers""
This reverts commit cd1b747b4f65fa3a6ed6aace23235db7591638c5.
Diffstat (limited to 'vespajlib/src/main/java/com/yahoo/concurrent/maintenance/JobMetrics.java')
-rw-r--r--vespajlib/src/main/java/com/yahoo/concurrent/maintenance/JobMetrics.java24
1 files changed, 11 insertions, 13 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 fcc5b8e57a2..73a5dc77743 100644
--- a/vespajlib/src/main/java/com/yahoo/concurrent/maintenance/JobMetrics.java
+++ b/vespajlib/src/main/java/com/yahoo/concurrent/maintenance/JobMetrics.java
@@ -2,25 +2,18 @@
package com.yahoo.concurrent.maintenance;
import java.util.concurrent.ConcurrentHashMap;
-import java.util.function.BiConsumer;
/**
* Tracks and forwards maintenance job metrics.
*
* @author mpolden
*/
-public class JobMetrics {
-
- private final BiConsumer<String, Long> metricConsumer;
+public abstract class JobMetrics {
private final ConcurrentHashMap<String, Long> incompleteRuns = new ConcurrentHashMap<>();
- public JobMetrics(BiConsumer<String, Long> metricConsumer) {
- this.metricConsumer = metricConsumer;
- }
-
- /** Record a run for given job */
- public void recordRunOf(String job) {
+ /** Record starting of a run of a job */
+ public void starting(String job) {
incompleteRuns.merge(job, 1L, Long::sum);
}
@@ -29,12 +22,17 @@ public class JobMetrics {
incompleteRuns.put(job, 0L);
}
- /** Forward metrics for given job to metric consumer */
- public void forward(String job) {
+ /**
+ * Records completion of a run of a job.
+ * This is guaranteed to always be called once whenever starting has been called.
+ */
+ public void completed(String job, double successFactor) {
Long incompleteRuns = this.incompleteRuns.get(job);
if (incompleteRuns != null) {
- metricConsumer.accept(job, incompleteRuns);
+ recordCompletion(job, incompleteRuns, successFactor);
}
}
+ protected abstract void recordCompletion(String job, Long incompleteRuns, double successFactor);
+
}