diff options
3 files changed, 20 insertions, 29 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/VespaMetricSet.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/VespaMetricSet.java index f01e7799e13..4d03944c4e9 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/VespaMetricSet.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/monitoring/VespaMetricSet.java @@ -202,6 +202,14 @@ public class VespaMetricSet { metrics.add(new Metric("jdisc.deactivated_containers.total.last")); metrics.add(new Metric("jdisc.deactivated_containers.with_retained_refs.last")); + metrics.add(new Metric("jdisc.singleton.is_active.last")); + metrics.add(new Metric("jdisc.singleton.activation.count.last")); + metrics.add(new Metric("jdisc.singleton.activation.failure.count.last")); + metrics.add(new Metric("jdisc.singleton.activation.millis.last")); + metrics.add(new Metric("jdisc.singleton.deactivation.count.last")); + metrics.add(new Metric("jdisc.singleton.deactivation.failure.count.last")); + metrics.add(new Metric("jdisc.singleton.deactivation.millis.last")); + metrics.add(new Metric("athenz-tenant-cert.expiry.seconds.last")); metrics.add(new Metric("container-iam-role.expiry.seconds")); 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 ec1aec4f370..e54197c39fd 100644 --- a/zkfacade/src/main/java/com/yahoo/vespa/curator/SingletonManager.java +++ b/zkfacade/src/main/java/com/yahoo/vespa/curator/SingletonManager.java @@ -154,7 +154,6 @@ class SingletonManager { doom.set(null); if (lock != null) try { logger.log(INFO, "Releasing lease for " + id); - metrics.hasLease(false); lock.close(); lock = null; } @@ -282,7 +281,6 @@ class SingletonManager { if (lock == null) try { lock = curator.lock(path.append("lock"), tickTimeout); logger.log(INFO, "Acquired lock for ID: " + id); - metrics.hasLease(true); } catch (RuntimeException e) { logger.log(FINE, "Failed acquiring lock for '" + path + "' within " + tickTimeout, e); @@ -371,8 +369,7 @@ class SingletonManager { private class MetricHelper { - static final String PREFIX = "singleton."; - static final String HAS_LEASE = PREFIX + "has_lease"; + static final String PREFIX = "jdisc.singleton."; static final String IS_ACTIVE = PREFIX + "is_active"; static final String ACTIVATION = PREFIX + "activation.count"; static final String ACTIVATION_MILLIS = PREFIX + "activation.millis"; @@ -387,10 +384,6 @@ class SingletonManager { this.context = metric.createContext(Map.of("singletonId", id)); } - void hasLease(boolean hasLease) { - metric.set(HAS_LEASE, hasLease ? 1 : 0, context); - } - void activation(Runnable activation) { Instant start = clock.instant(); boolean failed = false; 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 d0fef86946c..ab27dbbcc7b 100644 --- a/zkfacade/src/test/java/com/yahoo/vespa/curator/CuratorWrapperTest.java +++ b/zkfacade/src/test/java/com/yahoo/vespa/curator/CuratorWrapperTest.java @@ -130,8 +130,7 @@ public class CuratorWrapperTest { verifyMetrics(Map.of("activation.count", 3.0, "activation.millis", 0.0, "deactivation.count", 2.0, - "deactivation.millis", 0.0, - "has_lease", 1.0), + "deactivation.millis", 0.0), metric); // Manager unregisters remaining singletons on shutdown. @@ -141,8 +140,7 @@ public class CuratorWrapperTest { "activation.millis", 0.0, "deactivation.count", 3.0, "deactivation.millis", 0.0, - "is_active", 0.0, - "has_lease", 0.0), + "is_active", 0.0), metric); } } @@ -181,8 +179,7 @@ public class CuratorWrapperTest { "activation.millis", 0.0, "deactivation.count", 3.0, "deactivation.millis", 0.0, - "is_active", 1.0, - "has_lease", 1.0), + "is_active", 1.0), metric); // Add a singleton which fails activation. @@ -215,8 +212,7 @@ public class CuratorWrapperTest { "activation.failure.count", 1.0, "deactivation.count", 5.0, "deactivation.millis", 0.0, - "is_active", 0.0, - "has_lease", 1.0), + "is_active", 0.0), metric); stunning.arriveAndAwaitAdvance(); // Failing component is done being deactivated. stunning.arriveAndAwaitAdvance(); // Failing component is done cleaning up after itself. @@ -227,8 +223,7 @@ public class CuratorWrapperTest { "activation.failure.count", 1.0, "deactivation.count", 5.0, "deactivation.millis", 0.0, - "is_active", 1.0, - "has_lease", 1.0), + "is_active", 1.0), metric); newSingleton.shutdown(); @@ -238,8 +233,7 @@ public class CuratorWrapperTest { "activation.failure.count", 1.0, "deactivation.count", 6.0, "deactivation.millis", 0.0, - "is_active", 0.0, - "has_lease", 0.0), + "is_active", 0.0), metric); } } @@ -263,8 +257,7 @@ public class CuratorWrapperTest { singleton.phaser.arriveAndAwaitAdvance(); assertTrue(curator.isActive(singleton.id())); assertTrue(singleton.isActive); - verifyMetrics(Map.of("activation.count", 1.0, - "has_lease", 1.0), + verifyMetrics(Map.of("activation.count", 1.0), metric); // Simulate a different container wanting the lock. @@ -285,8 +278,7 @@ public class CuratorWrapperTest { "activation.millis", 0.0, "deactivation.count", 1.0, "deactivation.millis", 0.0, - "is_active", 0.0, - "has_lease", 0.0), + "is_active", 0.0), metric); // Connection is restored, and the other container releases the lock again. @@ -296,8 +288,7 @@ public class CuratorWrapperTest { verifyMetrics(Map.of("activation.count", 2.0, "activation.millis", 0.0, "deactivation.count", 1.0, - "deactivation.millis", 0.0, - "has_lease", 1.0), + "deactivation.millis", 0.0), metric); singleton.phaser.arriveAndDeregister(); @@ -308,8 +299,7 @@ public class CuratorWrapperTest { "activation.millis", 0.0, "deactivation.count", 2.0, "deactivation.millis", 0.0, - "is_active", 0.0, - "has_lease", 0.0), + "is_active", 0.0), metric); } } @@ -338,7 +328,7 @@ public class CuratorWrapperTest { } static void verifyMetrics(Map<String, Double> expected, MockMetric metrics) { - expected.forEach((metric, value) -> assertEquals(metric, value, metrics.metrics().get("singleton." + metric).get(Map.of("singletonId", "singleton")))); + expected.forEach((metric, value) -> assertEquals(metric, value, metrics.metrics().get("jdisc.singleton." + metric).get(Map.of("singletonId", "singleton")))); } } |