From f76d6a73729ac8fe6af545495308cc6241c4d29e Mon Sep 17 00:00:00 2001 From: Harald Musum Date: Wed, 25 Apr 2018 11:28:44 +0200 Subject: Move flags for rpc, messagebus and http enabled to container cluster --- .../model/builder/xml/ConfigModelBuilder.java | 1 - .../com/yahoo/vespa/model/container/Container.java | 44 +++++++++++----------- .../vespa/model/container/ContainerCluster.java | 15 +++++++- .../model/container/xml/ContainerModelBuilder.java | 19 +++++----- 4 files changed, 46 insertions(+), 33 deletions(-) (limited to 'config-model/src') diff --git a/config-model/src/main/java/com/yahoo/config/model/builder/xml/ConfigModelBuilder.java b/config-model/src/main/java/com/yahoo/config/model/builder/xml/ConfigModelBuilder.java index 711a3d1e72b..bb0d24f9b26 100644 --- a/config-model/src/main/java/com/yahoo/config/model/builder/xml/ConfigModelBuilder.java +++ b/config-model/src/main/java/com/yahoo/config/model/builder/xml/ConfigModelBuilder.java @@ -14,7 +14,6 @@ import org.w3c.dom.Element; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; import java.util.List; -import java.util.Optional; /** * Builds a config model using DOM parsers diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/Container.java b/config-model/src/main/java/com/yahoo/vespa/model/container/Container.java index 063c295e33c..447c14e2561 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/Container.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/Container.java @@ -3,7 +3,6 @@ package com.yahoo.vespa.model.container; import com.yahoo.component.ComponentId; import com.yahoo.component.ComponentSpecification; -import com.yahoo.config.model.deploy.DeployState; import com.yahoo.config.model.producer.AbstractConfigProducer; import com.yahoo.container.ComponentsConfig; import com.yahoo.container.QrConfig; @@ -39,8 +38,8 @@ import static com.yahoo.container.QrConfig.Rpc; /** * @author gjoranv - * @author einarmr - * @author tonytv + * @author Einar M R Rosenvinge + * @author Tony Vaagenes */ //qr is restart because it is handled by ConfiguredApplication.start @RestartConfigs({QrStartConfig.class, QrConfig.class}) @@ -59,14 +58,8 @@ public class Container extends AbstractService implements private final boolean isHostedVespa; private String clusterName = null; - private boolean rpcServerEnabled = true; - private Optional hostResponseHeaderKey = Optional.empty(); - // TODO: move these up to cluster - private boolean httpServerEnabled = true; - private boolean messageBusEnabled = true; - /** Whether this node has been marked as retired (e.g, will be removed) */ private final boolean retired; /** The unique index of this node */ @@ -84,10 +77,10 @@ public class Container extends AbstractService implements private static final String defaultHostedJVMArgs = "-XX:+UseOSErrorReporting -XX:+SuppressFatalErrorMessage"; public Container(AbstractConfigProducer parent, String name, int index) { - this(parent, name, Collections.emptyList(), index); + this(parent, name, Collections.emptyList(), index); } public Container(AbstractConfigProducer parent, String name, boolean retired, int index) { - this(parent, name, retired, Collections.emptyList(), index); + this(parent, name, retired, Collections.emptyList(), index); } public Container(AbstractConfigProducer parent, String name, List portOverrides, int index) { this(parent, name, false, portOverrides, index); @@ -159,6 +152,8 @@ public class Container extends AbstractService implements @Override public void initService() { + if (isInitialized()) return; + // XXX: Must be called first, to set the baseport super.initService(); @@ -179,7 +174,7 @@ public class Container extends AbstractService implements for (int i = 1; i < numHttpServerPorts; i++) portsMeta.on(i).tag("http").tag("external"); - if (rpcServerEnabled) { + if (rpcServerEnabled()) { portsMeta.on(numHttpServerPorts + 0).tag("rpc").tag("messaging"); portsMeta.on(numHttpServerPorts + 1).tag("rpc").tag("admin"); } @@ -286,7 +281,7 @@ public class Container extends AbstractService implements return getRelativePort(0); } } else { - return httpServerEnabled ? getSearchPort() : -1; + return httpServerEnabled() ? getSearchPort() : -1; } } @@ -294,8 +289,8 @@ public class Container extends AbstractService implements return "PRELOAD=" + getPreLoad() + " exec vespa-start-container-daemon " + getJvmArgs() + " "; } - public boolean isRpcServerEnabled() { - return rpcServerEnabled; + private boolean isRpcServerEnabled() { + return ((ContainerCluster) parent).rpcServerEnabled(); } @Override @@ -352,7 +347,7 @@ public class Container extends AbstractService implements private void addAllEnabledComponents(Collection> allComponents, AbstractConfigProducer current) { for (AbstractConfigProducer child: current.getChildren().values()) { - if ( ! httpServerEnabled && isHttpServer(child)) continue; + if ( ! httpServerEnabled() && isHttpServer(child)) continue; if (child instanceof Component) allComponents.add((Component) child); @@ -378,7 +373,7 @@ public class Container extends AbstractService implements @Override public void getConfig(ContainerMbusConfig.Builder builder) { - builder.enabled(messageBusEnabled).port(getMessagingPort()); + builder.enabled(messageBusEnabled()).port(getMessagingPort()); } @Override @@ -389,14 +384,17 @@ public class Container extends AbstractService implements return dimensions; } - public void setRpcServerEnabled(boolean rpcServerEnabled) { - this.rpcServerEnabled = rpcServerEnabled; + private boolean messageBusEnabled() { + return containerCluster().isPresent() && containerCluster().get().messageBusEnabled(); } - public void setHttpServerEnabled(boolean httpServerEnabled) { - this.httpServerEnabled = httpServerEnabled; + private boolean httpServerEnabled() { + return containerCluster().isPresent() && containerCluster().get().httpServerEnabled(); } + private boolean rpcServerEnabled() { + return containerCluster().isPresent() && containerCluster().get().rpcServerEnabled(); + } public static final class PortOverride { public final ComponentSpecification serverId; @@ -408,4 +406,8 @@ public class Container extends AbstractService implements } } + private Optional containerCluster() { + return (parent instanceof ContainerCluster) ? Optional.of((ContainerCluster) parent) : Optional.empty(); + } + } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java index 6ee525c1246..a627525ab77 100755 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java @@ -14,7 +14,6 @@ import com.yahoo.config.docproc.SchemamappingConfig; import com.yahoo.config.model.ApplicationConfigProducerRoot; import com.yahoo.config.model.deploy.DeployState; import com.yahoo.config.model.producer.AbstractConfigProducer; -import com.yahoo.config.model.producer.AbstractConfigProducerRoot; import com.yahoo.config.provision.Zone; import com.yahoo.container.BundlesConfig; import com.yahoo.container.ComponentsConfig; @@ -152,6 +151,8 @@ public final class ContainerCluster public static final String ROOT_HANDLER_BINDING = "*://*/"; + private static final boolean messageBusEnabled = true; + private final String name; private List containers = new ArrayList<>(); @@ -164,6 +165,8 @@ public final class ContainerCluster private SecretStore secretStore; private MbusParams mbusParams; + private boolean rpcServerEnabled = true; + private boolean httpServerEnabled = true; private final Set applicationBundles = new LinkedHashSet<>(); private final Set platformBundles = new LinkedHashSet<>(); @@ -805,6 +808,16 @@ public final class ContainerCluster */ public Optional getMemoryPercentage() { return memoryPercentage; } + boolean messageBusEnabled() { return messageBusEnabled; } + + public void setRpcServerEnabled(boolean rpcServerEnabled) { this.rpcServerEnabled = rpcServerEnabled; } + + boolean rpcServerEnabled() { return rpcServerEnabled; } + + boolean httpServerEnabled() { return httpServerEnabled; } + + public void setHttpServerEnabled(boolean httpServerEnabled) { this.httpServerEnabled = httpServerEnabled; } + @Override public String toString() { return "container cluster '" + getName() + "'"; diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java index 39aba9cfdf9..8cae7808c5b 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java @@ -71,7 +71,6 @@ import java.util.Map; import java.util.Optional; import java.util.Set; import java.util.function.Consumer; -import java.util.logging.Logger; import java.util.stream.Collectors; /** @@ -87,13 +86,15 @@ public class ContainerModelBuilder extends ConfigModelBuilder { /** * Path to vip status file for container in Hosted Vespa. Only used if set, else use HOSTED_VESPA_STATUS_FILE */ - static final String HOSTED_VESPA_STATUS_FILE_INSTALL_SETTING = "cloudconfig_server__tenant_vip_status_file"; + private static final String HOSTED_VESPA_STATUS_FILE_INSTALL_SETTING = "cloudconfig_server__tenant_vip_status_file"; public enum Networking { disable, enable } private ApplicationPackage app; private final boolean standaloneBuilder; private final Networking networking; + private final boolean rpcServerEnabled; + private final boolean httpServerEnabled; protected DeployLogger log; public static final List configModelIds = @@ -102,12 +103,13 @@ public class ContainerModelBuilder extends ConfigModelBuilder { private static final String xmlRendererId = RendererRegistry.xmlRendererId.getName(); private static final String jsonRendererId = RendererRegistry.jsonRendererId.getName(); - private static final Logger logger = Logger.getLogger(ContainerModelBuilder.class.getName()); - public ContainerModelBuilder(boolean standaloneBuilder, Networking networking) { super(ContainerModel.class); this.standaloneBuilder = standaloneBuilder; this.networking = networking; + // Always disable rpc server for standalone container + this.rpcServerEnabled = !standaloneBuilder; + this.httpServerEnabled = networking == Networking.enable; } @Override @@ -159,7 +161,6 @@ public class ContainerModelBuilder extends ConfigModelBuilder { addDefaultHandlers(cluster); addStatusHandlers(cluster, context); - addDefaultComponents(cluster); setDefaultMetricConsumerFactory(cluster); addHttp(spec, cluster); @@ -173,6 +174,8 @@ public class ContainerModelBuilder extends ConfigModelBuilder { addLegacyFilters(spec, cluster); // TODO: Remove for Vespa 7 addAthensCopperArgos(cluster, context); // Must be added after nodes. + cluster.setRpcServerEnabled(rpcServerEnabled); + cluster.setHttpServerEnabled(httpServerEnabled); } private void addSecretStore(ContainerCluster cluster, Element spec) { @@ -241,9 +244,6 @@ public class ContainerModelBuilder extends ConfigModelBuilder { addConfiguredComponents(cluster, spec, "component"); } - protected void addDefaultComponents(ContainerCluster cluster) { - } - protected void setDefaultMetricConsumerFactory(ContainerCluster cluster) { cluster.setDefaultMetricConsumerFactory(MetricDefaultsConfig.Factory.Enum.STATE_MONITOR); } @@ -442,8 +442,7 @@ public class ContainerModelBuilder extends ConfigModelBuilder { Container node = new Container(cluster, "container.0", 0); HostResource host = allocateSingleNodeHost(cluster, log, containerElement, context); node.setHostResource(host); - if ( ! node.isInitialized() ) // TODO: Fold this into initService - node.initService(); + node.initService(); cluster.addContainers(Collections.singleton(node)); } else { -- cgit v1.2.3