diff options
author | Øyvind Grønnesby <oyving@yahooinc.com> | 2022-12-12 21:39:21 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-12-12 21:39:21 +0100 |
commit | fc0180434827f15a5678f964b428a264919921cc (patch) | |
tree | 3e1cc3842d4d6298da4406a456f1d8af8a55ca16 /vespajlib/src/main/java/com/yahoo/concurrent/maintenance/Maintainer.java | |
parent | 74142ab848dcd57821c88d2629831a1731873ca8 (diff) | |
parent | 4ea035b70e31781783113a4b6eb56c21c7c02bf3 (diff) |
Merge pull request #25221 from vespa-engine/ogronnesby/maintainer-execution-timev8.98.34
Create a metric for maintainer execution time
Diffstat (limited to 'vespajlib/src/main/java/com/yahoo/concurrent/maintenance/Maintainer.java')
-rw-r--r-- | vespajlib/src/main/java/com/yahoo/concurrent/maintenance/Maintainer.java | 11 |
1 files changed, 8 insertions, 3 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 b038106843e..1e2c0900ff7 100644 --- a/vespajlib/src/main/java/com/yahoo/concurrent/maintenance/Maintainer.java +++ b/vespajlib/src/main/java/com/yahoo/concurrent/maintenance/Maintainer.java @@ -6,6 +6,7 @@ import com.yahoo.net.HostName; import java.math.BigDecimal; import java.math.RoundingMode; +import java.time.Clock; import java.time.Duration; import java.time.Instant; import java.util.List; @@ -35,15 +36,17 @@ public abstract class Maintainer implements Runnable { private final ScheduledExecutorService service; private final AtomicBoolean shutDown = new AtomicBoolean(); private final boolean ignoreCollision; + private final Clock clock; - public Maintainer(String name, Duration interval, Instant startedAt, JobControl jobControl, + public Maintainer(String name, Duration interval, Clock clock, JobControl jobControl, JobMetrics jobMetrics, List<String> clusterHostnames, boolean ignoreCollision) { this.name = name; this.interval = requireInterval(interval); this.jobControl = Objects.requireNonNull(jobControl); this.jobMetrics = Objects.requireNonNull(jobMetrics); this.ignoreCollision = ignoreCollision; - Objects.requireNonNull(startedAt); + this.clock = clock; + var startedAt = clock.instant(); Objects.requireNonNull(clusterHostnames); Duration initialDelay = staggeredDelay(interval, startedAt, HostName.getLocalhost(), clusterHostnames) .plus(Duration.ofSeconds(30)); // Let the system stabilize before maintenance @@ -109,6 +112,7 @@ public abstract class Maintainer implements Runnable { log.log(Level.FINE, () -> "Running " + this.getClass().getSimpleName()); double successFactor = 0; + long startTime = clock.millis(); try (var lock = jobControl.lockJob(name())) { successFactor = maintain(); } @@ -122,7 +126,8 @@ public abstract class Maintainer implements Runnable { log.log(Level.WARNING, this + " failed. Will retry in " + interval, e); } finally { - jobMetrics.completed(name(), successFactor); + long endTime = clock.millis(); + jobMetrics.completed(name(), successFactor, endTime - startTime); } log.log(Level.FINE, () -> "Finished " + this.getClass().getSimpleName()); } |