diff options
author | Jon Bratseth <bratseth@gmail.com> | 2021-06-04 11:42:11 +0200 |
---|---|---|
committer | Jon Bratseth <bratseth@gmail.com> | 2021-06-04 11:42:11 +0200 |
commit | ba36521578a55088c6e38d50b616af85eb33cf19 (patch) | |
tree | 221678c1cc8a1eba68f1d8e4a2991cb317d9f78d /vespajlib | |
parent | f5276653dfade6b01ef1d54e3690e172949ccc86 (diff) |
Return success factor
Diffstat (limited to 'vespajlib')
-rw-r--r-- | vespajlib/src/main/java/com/yahoo/concurrent/maintenance/Maintainer.java | 9 | ||||
-rw-r--r-- | vespajlib/src/test/java/com/yahoo/concurrent/maintenance/TestMaintainer.java | 4 |
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; } } |