summaryrefslogtreecommitdiffstats
path: root/zkfacade
diff options
context:
space:
mode:
authorjonmv <venstad@gmail.com>2022-11-09 14:47:54 +0100
committerjonmv <venstad@gmail.com>2022-11-09 14:47:54 +0100
commitda30932f4c7fa168814c44b816cc381ee51daa3b (patch)
tree1e3d31a7689fdba62cb516f72cc4f421124780bb /zkfacade
parent41d6174d5f311df6c84138f461379ce10d6a1fbf (diff)
Regularly write is_active metric
Diffstat (limited to 'zkfacade')
-rw-r--r--zkfacade/src/main/java/com/yahoo/vespa/curator/SingletonManager.java15
-rw-r--r--zkfacade/src/test/java/com/yahoo/vespa/curator/CuratorWrapperTest.java2
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();
}