summaryrefslogtreecommitdiffstats
path: root/container-core/src/main/java/com/yahoo/container
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@gmail.com>2020-11-16 12:48:43 +0100
committerJon Bratseth <bratseth@gmail.com>2020-11-16 12:48:43 +0100
commit70ca76a2fabe46a809d620d3192d57f95f114290 (patch)
tree7566ad1cc9f2bb9d5dfb0167651f0ba976ccdfea /container-core/src/main/java/com/yahoo/container
parent1375c8aded9eb18aa8496518948730e28a01224b (diff)
Add in_rotation metric to containers
Diffstat (limited to 'container-core/src/main/java/com/yahoo/container')
-rw-r--r--container-core/src/main/java/com/yahoo/container/handler/VipStatus.java36
1 files changed, 35 insertions, 1 deletions
diff --git a/container-core/src/main/java/com/yahoo/container/handler/VipStatus.java b/container-core/src/main/java/com/yahoo/container/handler/VipStatus.java
index 876d05b7be9..bbedf723bfa 100644
--- a/container-core/src/main/java/com/yahoo/container/handler/VipStatus.java
+++ b/container-core/src/main/java/com/yahoo/container/handler/VipStatus.java
@@ -5,7 +5,9 @@ import com.google.inject.Inject;
import com.yahoo.container.QrSearchersConfig;
import com.yahoo.container.core.VipStatusConfig;
import com.yahoo.container.jdisc.state.StateMonitor;
+import com.yahoo.jdisc.Metric;
+import java.util.Map;
import java.util.stream.Collectors;
/**
@@ -19,6 +21,8 @@ import java.util.stream.Collectors;
*/
public class VipStatus {
+ private final Metric metric;
+
private final ClustersStatus clustersStatus;
private final StateMonitor healthState;
@@ -57,15 +61,25 @@ public class VipStatus {
public VipStatus(QrSearchersConfig dispatchers,
VipStatusConfig vipStatusConfig,
ClustersStatus clustersStatus,
- StateMonitor healthState) {
+ StateMonitor healthState,
+ Metric metric) {
this.clustersStatus = clustersStatus;
this.healthState = healthState;
+ this.metric = metric;
initiallyInRotation = vipStatusConfig.initiallyInRotation();
clustersStatus.setClusters(dispatchers.searchcluster().stream().map(c -> c.name()).collect(Collectors.toSet()));
updateCurrentlyInRotation();
}
@Deprecated // TODO: Remove on Vespa 8
+ public VipStatus(QrSearchersConfig dispatchers,
+ VipStatusConfig vipStatusConfig,
+ ClustersStatus clustersStatus,
+ StateMonitor healthState) {
+ this(dispatchers, vipStatusConfig, clustersStatus, healthState, new NullMetric());
+ }
+
+ @Deprecated // TODO: Remove on Vespa 8
public VipStatus(QrSearchersConfig dispatchers, ClustersStatus clustersStatus, StateMonitor healthState) {
this(dispatchers, new VipStatusConfig.Builder().build(), clustersStatus, healthState);
}
@@ -134,6 +148,8 @@ public class VipStatus {
healthState.status(StateMonitor.Status.up);
else if (healthState.status() == StateMonitor.Status.up)
healthState.status(StateMonitor.Status.down);
+
+ metric.set("in_rotation", currentlyInRotation ? 1 : 0, metric.createContext(Map.of()));
}
}
@@ -144,4 +160,22 @@ public class VipStatus {
}
}
+ private static class NullMetric implements Metric {
+
+ @Override
+ public void set(String key, Number val, Context ctx) { }
+
+ @Override
+ public void add(String key, Number val, Context ctx) { }
+
+ @Override
+ public Context createContext(Map<String, ?> properties) {
+ return new NullContext();
+ }
+
+ private static class NullContext implements Context {
+ }
+
+ }
+
}