diff options
author | Håkon Hallingstad <hakon@verizonmedia.com> | 2021-03-23 11:56:24 +0100 |
---|---|---|
committer | Håkon Hallingstad <hakon@verizonmedia.com> | 2021-03-23 11:56:24 +0100 |
commit | 44f64849fdd2a0dc62e84eb701bae1216d0b2215 (patch) | |
tree | eb8700943c722c4e5bfc62714580025e01f49a5d /service-monitor/src | |
parent | 81871d3f99f2155b0d81b347b61ac685a7bbc13e (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/src')
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, |