diff options
author | jonmv <venstad@gmail.com> | 2022-11-09 14:47:54 +0100 |
---|---|---|
committer | jonmv <venstad@gmail.com> | 2022-11-09 14:47:54 +0100 |
commit | da30932f4c7fa168814c44b816cc381ee51daa3b (patch) | |
tree | 1e3d31a7689fdba62cb516f72cc4f421124780bb /zkfacade | |
parent | 41d6174d5f311df6c84138f461379ce10d6a1fbf (diff) |
Regularly write is_active metric
Diffstat (limited to 'zkfacade')
-rw-r--r-- | zkfacade/src/main/java/com/yahoo/vespa/curator/SingletonManager.java | 15 | ||||
-rw-r--r-- | zkfacade/src/test/java/com/yahoo/vespa/curator/CuratorWrapperTest.java | 2 |
2 files changed, 13 insertions, 4 deletions
diff --git a/zkfacade/src/main/java/com/yahoo/vespa/curator/SingletonManager.java b/zkfacade/src/main/java/com/yahoo/vespa/curator/SingletonManager.java index f5daac20edc..28d3b052ce2 100644 --- a/zkfacade/src/main/java/com/yahoo/vespa/curator/SingletonManager.java +++ b/zkfacade/src/main/java/com/yahoo/vespa/curator/SingletonManager.java @@ -173,6 +173,8 @@ class SingletonManager { updateStatus(); // Process the next pending, externally triggered task, if any. doTask(); + // Write isActive metric regularly. + metrics.ping(); } catch (InterruptedException e) { if ( ! shutdown.get()) { @@ -304,7 +306,7 @@ class SingletonManager { /** * Attempt to activate or deactivate if status has changed. - * If activation fails, we release the lock, to a different container may acquire it. + * If activation fails, we release the lock, so a different container may acquire it. */ private void updateStatus() { Instant ourDoom = doom.get(); @@ -384,11 +386,16 @@ class SingletonManager { static final String DEACTIVATION_FAILURES = PREFIX + "deactivation.failure.count"; final Metric.Context context; + boolean isActive; MetricHelper() { this.context = metric.createContext(Map.of("singletonId", id)); } + void ping() { + metric.set(IS_ACTIVE, isActive ? 1 : 0, context); + } + void activation(Runnable activation) { Instant start = clock.instant(); boolean failed = false; @@ -403,7 +410,8 @@ class SingletonManager { finally { metric.set(ACTIVATION_MILLIS, Duration.between(start, clock.instant()).toMillis(), context); if (failed) metric.add(ACTIVATION_FAILURES, 1, context); - else metric.set(IS_ACTIVE, 1, context); + else isActive = true; + ping(); } } @@ -421,7 +429,8 @@ class SingletonManager { finally { metric.set(DEACTIVATION_MILLIS, Duration.between(start, clock.instant()).toMillis(), context); if (failed) metric.add(DEACTIVATION_FAILURES, 1, context); - metric.set(IS_ACTIVE, 0, context); + isActive = false; + ping(); } } diff --git a/zkfacade/src/test/java/com/yahoo/vespa/curator/CuratorWrapperTest.java b/zkfacade/src/test/java/com/yahoo/vespa/curator/CuratorWrapperTest.java index 5eb38c559a9..f427d5c8a08 100644 --- a/zkfacade/src/test/java/com/yahoo/vespa/curator/CuratorWrapperTest.java +++ b/zkfacade/src/test/java/com/yahoo/vespa/curator/CuratorWrapperTest.java @@ -249,7 +249,7 @@ public class CuratorWrapperTest { singleton = new Singleton(curator); assertFalse(singleton.isActive); assertFalse(curator.isActive(singleton.id())); - assertEquals(Map.of(), metric.metrics()); + verifyMetrics(Map.of("is_active", 0.0), metric); singleton.phaser.register(); } |