aboutsummaryrefslogtreecommitdiffstats
path: root/service-monitor
diff options
context:
space:
mode:
authorHåkon Hallingstad <hakon@verizonmedia.com>2021-03-23 11:56:24 +0100
committerHåkon Hallingstad <hakon@verizonmedia.com>2021-03-23 11:56:24 +0100
commit44f64849fdd2a0dc62e84eb701bae1216d0b2215 (patch)
treeeb8700943c722c4e5bfc62714580025e01f49a5d /service-monitor
parent81871d3f99f2155b0d81b347b61ac685a7bbc13e (diff)
Require 3 config server (and controller) hosts
We already require 3 config server (and controller) nodes, but it is not sufficient to protect the hosts from being left with only 1 healthy host: Say the config server host application contains 2 nodes. An upgrade of host-admin on one of those nodes is allowed, since only the host is suspended and none of the 2 nodes are down. This is fixed by handling config server hosts similar to config servers: assume 3 nodes.
Diffstat (limited to 'service-monitor')
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/duper/ConfigServerApplication.java11
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/duper/InfraApplication.java6
-rw-r--r--service-monitor/src/main/java/com/yahoo/vespa/service/model/ApplicationInstanceGenerator.java2
3 files changed, 16 insertions, 3 deletions
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/duper/ConfigServerApplication.java b/service-monitor/src/main/java/com/yahoo/vespa/service/duper/ConfigServerApplication.java
index f8eec00a340..cf9825b26cf 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/duper/ConfigServerApplication.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/duper/ConfigServerApplication.java
@@ -3,6 +3,8 @@ package com.yahoo.vespa.service.duper;
import com.yahoo.config.provision.ClusterSpec;
import com.yahoo.config.provision.NodeType;
+import com.yahoo.config.provision.Zone;
+import com.yahoo.vespa.applicationmodel.ApplicationInstanceId;
import com.yahoo.vespa.applicationmodel.ServiceType;
/**
@@ -16,4 +18,13 @@ public class ConfigServerApplication extends ConfigServerLikeApplication {
super("zone-config-servers", NodeType.config, ClusterSpec.Type.admin, ServiceType.CONFIG_SERVER);
}
+ /**
+ * A config server application has a particularly simple ApplicationInstanceId.
+ *
+ * @see InfraApplication#getApplicationInstanceId(Zone)
+ */
+ public ApplicationInstanceId getApplicationInstanceId() {
+ return new ApplicationInstanceId(getApplicationId().application().value());
+ }
+
}
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/duper/InfraApplication.java b/service-monitor/src/main/java/com/yahoo/vespa/service/duper/InfraApplication.java
index da00ebc41e0..1bdf1ff67d9 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/duper/InfraApplication.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/duper/InfraApplication.java
@@ -12,12 +12,14 @@ import com.yahoo.config.provision.ClusterSpec;
import com.yahoo.config.provision.HostName;
import com.yahoo.config.provision.NodeType;
import com.yahoo.config.provision.TenantName;
+import com.yahoo.config.provision.Zone;
import com.yahoo.vespa.applicationmodel.ApplicationInstanceId;
import com.yahoo.vespa.applicationmodel.ClusterId;
import com.yahoo.vespa.applicationmodel.ConfigId;
import com.yahoo.vespa.applicationmodel.ServiceType;
import com.yahoo.vespa.applicationmodel.TenantId;
import com.yahoo.vespa.service.health.StateV1HealthModel;
+import com.yahoo.vespa.service.model.ApplicationInstanceGenerator;
import com.yahoo.vespa.service.model.ModelGenerator;
import com.yahoo.vespa.service.monitor.InfraApplicationApi;
@@ -94,8 +96,8 @@ public abstract class InfraApplication implements InfraApplicationApi {
return serviceType;
}
- public ApplicationInstanceId getApplicationInstanceId() {
- return new ApplicationInstanceId(applicationId.application().value());
+ public ApplicationInstanceId getApplicationInstanceId(Zone zone) {
+ return ApplicationInstanceGenerator.toApplicationInstanceId(applicationId, zone);
}
public TenantId getTenantId() {
diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/model/ApplicationInstanceGenerator.java b/service-monitor/src/main/java/com/yahoo/vespa/service/model/ApplicationInstanceGenerator.java
index d0ecad5f27a..60e22639e8b 100644
--- a/service-monitor/src/main/java/com/yahoo/vespa/service/model/ApplicationInstanceGenerator.java
+++ b/service-monitor/src/main/java/com/yahoo/vespa/service/model/ApplicationInstanceGenerator.java
@@ -164,7 +164,7 @@ public class ApplicationInstanceGenerator {
return new ServiceInstance(configId, hostName, status);
}
- private static ApplicationInstanceId toApplicationInstanceId(ApplicationId applicationId, Zone zone) {
+ public static ApplicationInstanceId toApplicationInstanceId(ApplicationId applicationId, Zone zone) {
if (applicationId.equals(configServerApplicationId)) {
// Removing this historical discrepancy would break orchestration during rollout.
// An alternative may be to use a feature flag and flip it between releases,