summaryrefslogtreecommitdiffstats
path: root/vespajlib
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@gmail.com>2021-06-04 11:42:11 +0200
committerJon Bratseth <bratseth@gmail.com>2021-06-04 11:42:11 +0200
commitba36521578a55088c6e38d50b616af85eb33cf19 (patch)
tree221678c1cc8a1eba68f1d8e4a2991cb317d9f78d /vespajlib
parentf5276653dfade6b01ef1d54e3690e172949ccc86 (diff)
Return success factor
Diffstat (limited to 'vespajlib')
-rw-r--r--vespajlib/src/main/java/com/yahoo/concurrent/maintenance/Maintainer.java9
-rw-r--r--vespajlib/src/test/java/com/yahoo/concurrent/maintenance/TestMaintainer.java4
2 files changed, 9 insertions, 4 deletions
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 fb2339a4334..2a9e6dda6b6 100644
--- a/vespajlib/src/main/java/com/yahoo/concurrent/maintenance/Maintainer.java
+++ b/vespajlib/src/main/java/com/yahoo/concurrent/maintenance/Maintainer.java
@@ -90,7 +90,12 @@ public abstract class Maintainer implements Runnable {
* Note that this indicates whether something is wrong, so e.g if the call did nothing because it should do
* nothing, 1.0 should be returned.
*/
- protected abstract boolean maintain();
+ protected abstract double maintain();
+
+ /** Convenience methods to convert attempts and failures into a success factor */
+ protected final double asSuccessFactor(int attempts, int failures) {
+ return attempts == 0 ? 1.0 : 1 - (double)failures / attempts;
+ }
/** Returns the interval at which this job is set to run */
protected Duration interval() { return interval; }
@@ -102,7 +107,7 @@ public abstract class Maintainer implements Runnable {
jobMetrics.starting(name());
double successFactor = 0;
try (var lock = jobControl.lockJob(name())) {
- successFactor = maintain() ? 1.0 : 0.0;
+ successFactor = maintain();
if (successFactor > 0.0)
jobMetrics.recordCompletionOf(name());
} catch (UncheckedTimeoutException e) {
diff --git a/vespajlib/src/test/java/com/yahoo/concurrent/maintenance/TestMaintainer.java b/vespajlib/src/test/java/com/yahoo/concurrent/maintenance/TestMaintainer.java
index 44a00a37a83..7424b17cab2 100644
--- a/vespajlib/src/test/java/com/yahoo/concurrent/maintenance/TestMaintainer.java
+++ b/vespajlib/src/test/java/com/yahoo/concurrent/maintenance/TestMaintainer.java
@@ -33,10 +33,10 @@ class TestMaintainer extends Maintainer {
}
@Override
- protected boolean maintain() {
+ protected double maintain() {
if (exceptionToThrow != null) throw exceptionToThrow;
totalRuns++;
- return success;
+ return success ? 1.0 : 0.0;
}
}