diff options
author | Jon Bratseth <bratseth@gmail.com> | 2021-04-23 10:02:00 +0200 |
---|---|---|
committer | Jon Bratseth <bratseth@gmail.com> | 2021-04-23 10:02:00 +0200 |
commit | 9cf0457e97627de0d52b846529c398cfc77e3fc6 (patch) | |
tree | 0b75192a5cb89733658128042f54bfa584255408 | |
parent | 9e6c24e8256ac77d60a171880d4f11a938bbfabe (diff) |
Create cluster controller cluster on logserver
5 files changed, 30 insertions, 31 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/Admin.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/Admin.java index af99ee28e29..efae00096df 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/admin/Admin.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/Admin.java @@ -186,19 +186,6 @@ public class Admin extends AbstractConfigProducer<Admin> implements Serializable return fileDistribution; } - public List<HostResource> getClusterControllerHosts() { - List<HostResource> hosts = new ArrayList<>(); - if (multitenant) { - if (logserver != null) - hosts.add(logserver.getHostResource()); - } else { - for (Configserver configserver : getConfigservers()) { - hosts.add(configserver.getHostResource()); - } - } - return hosts; - } - /** * Adds services to all hosts in the system. */ diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerContainer.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerContainer.java index 72fb1160f7f..ed1dc80d71d 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerContainer.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerContainer.java @@ -61,9 +61,9 @@ public class ClusterControllerContainer extends Container implements "/cluster/v2/*", CLUSTERCONTROLLER_BUNDLE); addComponent(new AccessLogComponent(containerCluster().orElse(null), AccessLogComponent.AccessLogType.jsonAccessLog, - AccessLogComponent.CompressionType.GZIP, - "controller", - deployState.isHosted())); + AccessLogComponent.CompressionType.GZIP, + "controller", + deployState.isHosted())); // TODO: Why are bundles added here instead of in the cluster? addFileBundle("clustercontroller-apps"); diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/ContentCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/ContentCluster.java index c836209e8b3..38eb15819b9 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/ContentCluster.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/ContentCluster.java @@ -25,6 +25,7 @@ import com.yahoo.vespa.config.content.core.BucketspacesConfig; import com.yahoo.vespa.config.content.core.StorDistributormanagerConfig; import com.yahoo.vespa.model.HostResource; import com.yahoo.vespa.model.admin.Admin; +import com.yahoo.vespa.model.admin.Configserver; import com.yahoo.vespa.model.admin.clustercontroller.ClusterControllerCluster; import com.yahoo.vespa.model.admin.clustercontroller.ClusterControllerComponent; import com.yahoo.vespa.model.admin.clustercontroller.ClusterControllerConfigurer; @@ -170,7 +171,7 @@ public class ContentCluster extends AbstractConfigProducer implements if (context.getParentProducer().getRoot() == null) return c; - addClusterControllers(context, c.rootGroup, contentElement, c.clusterId, c, deployState); + addClusterControllers(context, contentElement, c, deployState); return c; } @@ -284,9 +285,7 @@ public class ContentCluster extends AbstractConfigProducer implements } private void addClusterControllers(ConfigModelContext context, - StorageGroup rootGroup, ModelElement contentElement, - String contentClusterName, ContentCluster contentCluster, DeployState deployState) { if (admin == null) return; // only in tests @@ -295,18 +294,33 @@ public class ContentCluster extends AbstractConfigProducer implements if (context.properties().hostedVespa()) { clusterControllers = getDedicatedSharedControllers(contentElement, admin, context, deployState); } - else { + else if (admin.multitenant()) { // system tests: Put on logserver + if (admin.getClusterControllers() == null) { + // TODO: logserver== null only obtains in unit tests, disallow it + List<HostResource> host = admin.getLogserver() == null ? List.of() : List.of(admin.getLogserver().getHostResource()); + admin.setClusterControllers(createClusterControllers(new ClusterControllerCluster(admin, "standalone", deployState), + host, + "cluster-controllers", + true, + deployState)); + } clusterControllers = admin.getClusterControllers(); - if (clusterControllers == null) { - List<HostResource> hosts = admin.getClusterControllerHosts(); + } + else { // self hosted: Put on config servers or explicit cluster controllers + if (admin.getClusterControllers() == null) { + var hosts = admin.getConfigservers().stream().map(s -> s.getHostResource()).collect(toList()); if (hosts.size() > 1) { - context.getDeployState().getDeployLogger().log(Level.INFO, - "When having content cluster(s) and more than 1 config server it is recommended to configure cluster controllers explicitly."); + var message = "When having content clusters and more than 1 config server " + + "it is recommended to configure cluster controllers explicitly."; + deployState.getDeployLogger().log(Level.INFO, message); } - boolean runStandaloneZooKeeper = admin.multitenant(); // When multitenant we'll not run on config servers so we need to add a Zk instance - clusterControllers = createClusterControllers(admin, hosts, "cluster-controllers", runStandaloneZooKeeper, context.getDeployState()); - admin.setClusterControllers(clusterControllers); + admin.setClusterControllers(createClusterControllers(admin, + hosts, + "cluster-controllers", + false, + deployState)); } + clusterControllers = admin.getClusterControllers(); } addClusterControllerComponentsForThisCluster(clusterControllers, contentCluster); diff --git a/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV2BuilderTest.java b/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV2BuilderTest.java index 18063bff16b..69a0c8d656c 100755 --- a/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV2BuilderTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV2BuilderTest.java @@ -122,12 +122,10 @@ public class DomAdminV2BuilderTest extends DomBuilderTest { Admin admin = buildAdmin(servicesMultitenantAdminOnly(), true, configServerSpecs); assertThat(admin.getConfigservers().size(), is(3)); assertThat(admin.getSlobroks().size(), is(1)); - assertThat(admin.getClusterControllerHosts().size(), is(1)); assertNotNull(admin.hostSystem().getHostByHostname("test1")); for (Configserver configserver : admin.getConfigservers()) { - assertThat(configserver.getHostName(), is(not(admin.getClusterControllerHosts().get(0).getHost().getHostname()))); for (Slobrok slobrok : admin.getSlobroks()) { - assertThat(slobrok.getHostName(), is(not(configserver.getHostName()))); + assertThat(slobrok.getHostName(), is(not(configserver.getHostName()))); } } } diff --git a/container-search/src/main/java/com/yahoo/prelude/query/FalseItem.java b/container-search/src/main/java/com/yahoo/prelude/query/FalseItem.java index 531a89312df..9abc6b2bdaa 100644 --- a/container-search/src/main/java/com/yahoo/prelude/query/FalseItem.java +++ b/container-search/src/main/java/com/yahoo/prelude/query/FalseItem.java @@ -4,7 +4,7 @@ package com.yahoo.prelude.query; import java.nio.ByteBuffer; /** - * A query item which never matches. This is sometimes an useful output of query rewriting. + * A query item which never matches. This is sometimes a useful output of query rewriting. * * @author bratseth */ |