aboutsummaryrefslogtreecommitdiffstats
path: root/config-model/src
diff options
context:
space:
mode:
Diffstat (limited to 'config-model/src')
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/producer/package-info.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/ConstantTensorTransformer.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/UnprocessingSearchBuilder.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/derived/package-info.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/AbstractService.java7
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/HostResource.java23
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/PortsMeta.java5
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/admin/Configserver.java20
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/admin/Slobrok.java8
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerComponent.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/DeploymentFileValidator.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/RankingConstantsValidator.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/Container.java31
-rwxr-xr-xconfig-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java26
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/http/package-info.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/cluster/ContentCluster.java32
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/utils/FileSender.java2
-rw-r--r--config-model/src/test/cfg/application/validation/ranking_constants_fail/services.xml2
-rw-r--r--config-model/src/test/examples/weightedset-summaryto.sd2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/derived/EmptyRankProfileTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/application/validation/ConstantTensorJsonValidatorTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/application/validation/RankingConstantsValidatorTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/search/IndexingScriptChangeValidatorTest.java2
-rwxr-xr-xconfig-model/src/test/java/com/yahoo/vespa/model/container/ContainerClusterTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/content/ClusterTest.java106
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/content/utils/ContentClusterUtils.java23
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/generic/GenericServicesModelTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/test/PortsMetaTestCase.java2
28 files changed, 157 insertions, 160 deletions
diff --git a/config-model/src/main/java/com/yahoo/config/model/producer/package-info.java b/config-model/src/main/java/com/yahoo/config/model/producer/package-info.java
index c58a116b196..e6d1731ddf8 100644
--- a/config-model/src/main/java/com/yahoo/config/model/producer/package-info.java
+++ b/config-model/src/main/java/com/yahoo/config/model/producer/package-info.java
@@ -2,4 +2,4 @@
@ExportPackage
package com.yahoo.config.model.producer;
-import com.yahoo.osgi.annotation.ExportPackage; \ No newline at end of file
+import com.yahoo.osgi.annotation.ExportPackage;
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/ConstantTensorTransformer.java b/config-model/src/main/java/com/yahoo/searchdefinition/ConstantTensorTransformer.java
index b10a8633a3a..7232a2c5299 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/ConstantTensorTransformer.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/ConstantTensorTransformer.java
@@ -71,4 +71,4 @@ class ConstantTensorTransformer extends ExpressionTransformer {
return new ReferenceNode("constant", Arrays.asList(new NameNode(node.getName())), null);
}
-} \ No newline at end of file
+}
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/UnprocessingSearchBuilder.java b/config-model/src/main/java/com/yahoo/searchdefinition/UnprocessingSearchBuilder.java
index 3df0c1f9953..70a51cfd7ba 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/UnprocessingSearchBuilder.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/UnprocessingSearchBuilder.java
@@ -37,4 +37,4 @@ public class UnprocessingSearchBuilder extends SearchBuilder {
builder.build();
return builder.getSearch();
}
-} \ No newline at end of file
+}
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/derived/package-info.java b/config-model/src/main/java/com/yahoo/searchdefinition/derived/package-info.java
index 4e63729ea34..a44c2f45d6f 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/derived/package-info.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/derived/package-info.java
@@ -2,4 +2,4 @@
@ExportPackage
package com.yahoo.searchdefinition.derived;
-import com.yahoo.osgi.annotation.ExportPackage; \ No newline at end of file
+import com.yahoo.osgi.annotation.ExportPackage;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/AbstractService.java b/config-model/src/main/java/com/yahoo/vespa/model/AbstractService.java
index bda79ee2356..dd6556f81d2 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/AbstractService.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/AbstractService.java
@@ -102,7 +102,7 @@ public abstract class AbstractService extends AbstractConfigProducer<AbstractCon
Map<HostResource, List<SERVICE>> affinityMap = new HashMap<>();
for (SERVICE service : services) {
if (!affinityMap.containsKey(service.getHostResource())) {
- affinityMap.put(service.getHostResource(), new ArrayList<SERVICE>());
+ affinityMap.put(service.getHostResource(), new ArrayList<>());
}
int cpuSocket = affinityMap.get(service.getHostResource()).size();
affinityMap.get(service.getHostResource()).add(service);
@@ -548,4 +548,9 @@ public abstract class AbstractService extends AbstractConfigProducer<AbstractCon
public void setAffinity(Affinity affinity) {
this.affinity = Optional.ofNullable(affinity);
}
+
+ @Override
+ public String toString() {
+ return getServiceName() + " on " + getHost().toString();
+ }
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/HostResource.java b/config-model/src/main/java/com/yahoo/vespa/model/HostResource.java
index d54dc912da6..46dc287bb10 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/HostResource.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/HostResource.java
@@ -3,13 +3,11 @@ package com.yahoo.vespa.model;
import com.yahoo.config.model.api.HostInfo;
import com.yahoo.config.provision.ClusterMembership;
-import com.yahoo.config.provision.ClusterSpec;
import com.yahoo.config.provision.Flavor;
import javax.annotation.Nullable;
import java.util.ArrayList;
import java.util.Collections;
-import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.List;
@@ -30,7 +28,7 @@ import java.util.stream.Collectors;
public class HostResource implements Comparable<HostResource> {
public final static int BASE_PORT = 19100;
- public final static int MAX_PORTS = 799;
+ final static int MAX_PORTS = 799;
private final Host host;
// Map from "sentinel name" to service
@@ -81,18 +79,6 @@ public class HostResource implements Comparable<HostResource> {
0;
}
- boolean isPortRangeAvailable(int start, int numPorts) {
- int range = 0;
- int port = start;
- for (; port < BASE_PORT + MAX_PORTS && (range < numPorts); port++) {
- if (portDB.containsKey(port)) {
- return false;
- }
- range++;
- }
- return range == numPorts;
- }
-
/**
* Adds service and allocates resources for it.
*
@@ -179,7 +165,8 @@ public class HostResource implements Comparable<HostResource> {
return port >= BASE_PORT &&
port < BASE_PORT + MAX_PORTS;
}
- private void portAlreadyReserved(AbstractService service, int port) {
+
+ private void portAlreadyReserved(AbstractService service, int port) {
AbstractService otherService = (AbstractService)portDB.get(port);
int nextAvailablePort = nextAvailableBaseport(service.getPortCount());
if (nextAvailablePort == 0) {
@@ -190,10 +177,9 @@ public class HostResource implements Comparable<HostResource> {
: "";
throw new RuntimeException(service.getServiceName() + " cannot reserve port " + port +
" on " + this + ": Already reserved for " + otherService.getServiceName() +
- ". " + msg + "Next available port is: " + nextAvailablePort);
+ ". " + msg + "Next available port is: " + nextAvailablePort + " ports used: " + portDB);
}
-
private void noMoreAvailablePorts() {
throw new RuntimeException
("Too many ports are reserved in Vespa's port range (" +
@@ -201,7 +187,6 @@ public class HostResource implements Comparable<HostResource> {
". Move one or more services to another host, or outside this port range.");
}
-
/**
* Returns the service with the given "sentinel name" on this Host,
* or null if the name does not match any service.
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/PortsMeta.java b/config-model/src/main/java/com/yahoo/vespa/model/PortsMeta.java
index a0b3cc7294b..e8f2bf42807 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/PortsMeta.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/PortsMeta.java
@@ -20,7 +20,7 @@ public class PortsMeta implements Serializable {
private Integer rpcAdminOffset = null;
/** Remember the rpc status port offset. */
private Integer rpcStatusOffset = null;
- /** Remember the https admin port offset. */
+ /** Remember the http admin port offset. */
private Integer httpAdminOffset = null;
/** Remember the http status port offset. */
private Integer httpStatusOffset = null;
@@ -64,7 +64,7 @@ public class PortsMeta implements Serializable {
private PortsMeta register(int offset, String meta) {
// Allocate new LinkedLists on each element up-to-and-including offset
for (int i = ports.size(); i <= offset; i++) {
- ports.add(i, new LinkedList<String>());
+ ports.add(i, new LinkedList<>());
}
ports.get(offset).addFirst(meta);
@@ -88,6 +88,7 @@ public class PortsMeta implements Serializable {
public int getNumPorts() {
return ports.size();
}
+
/**
* Get an iterator of the Strings registered at the specific point.
* @param offset The relative offset to inquire about tags.
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/Configserver.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/Configserver.java
index b2c2510ce22..cd06ae67776 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/admin/Configserver.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/Configserver.java
@@ -42,16 +42,16 @@ public class Configserver extends AbstractService {
* Returns the desired base port for this service.
*/
public int getWantedPort() {
- try {
- // TODO: Provide configserver port as argument when creating this service instead
- Process process = new ProcessBuilder(getDefaults().underVespaHome("bin/vespa-print-default"), "configserver_rpc_port").start();
- InputStream in = process.getInputStream();
- BufferedReader reader = new BufferedReader(new InputStreamReader(in));
- return Integer.parseInt(reader.readLine().trim());
- } catch (Exception exception) {
- log.log(LogLevel.DEBUG, "Error reading port from script, using " + defaultPort);
- return defaultPort;
- }
+ try {
+ // TODO: Provide configserver port as argument when creating this service instead
+ Process process = new ProcessBuilder(getDefaults().underVespaHome("bin/vespa-print-default"), "configserver_rpc_port").start();
+ InputStream in = process.getInputStream();
+ BufferedReader reader = new BufferedReader(new InputStreamReader(in));
+ return Integer.parseInt(reader.readLine().trim());
+ } catch (Exception exception) {
+ log.log(LogLevel.DEBUG, "Error reading port from script, using " + defaultPort);
+ return defaultPort;
+ }
}
/**
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/Slobrok.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/Slobrok.java
index a2b7c7a5532..912809178ee 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/admin/Slobrok.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/Slobrok.java
@@ -13,8 +13,8 @@ public class Slobrok extends AbstractService {
private static final long serialVersionUID = 1L;
/**
- * @param parent The parent ConfigProducer.
- * @param index unique index for all slobroks
+ * @param parent The parent ConfigProducer.
+ * @param index unique index for all slobroks
*/
public Slobrok(AbstractConfigProducer parent, int index) {
super(parent, "slobrok." + index);
@@ -42,8 +42,8 @@ public class Slobrok extends AbstractService {
public String getStartupCommand() {
return "exec $ROOT/bin/slobrok -p " + getPort() +
- " -s " + getStatePort() +
- " -c " + getConfigId();
+ " -s " + getStatePort() +
+ " -c " + getConfigId();
}
/**
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerComponent.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerComponent.java
index 8ec1cecf47a..d2dace21b86 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerComponent.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerComponent.java
@@ -17,4 +17,4 @@ public class ClusterControllerComponent extends SimpleComponent
new ComponentSpecification("com.yahoo.vespa.clustercontroller.apps.clustercontroller.ClusterController"),
new ComponentSpecification("clustercontroller-apps"))));
}
-} \ No newline at end of file
+}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/DeploymentFileValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/DeploymentFileValidator.java
index e692b053de5..02e02cbe20a 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/DeploymentFileValidator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/DeploymentFileValidator.java
@@ -37,4 +37,4 @@ public class DeploymentFileValidator extends Validator {
}
}
}
-} \ No newline at end of file
+}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/RankingConstantsValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/RankingConstantsValidator.java
index 7017a5a233c..83d06f470a7 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/RankingConstantsValidator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/RankingConstantsValidator.java
@@ -68,4 +68,4 @@ public class RankingConstantsValidator extends Validator {
tensorApplicationFile.createReader());
}
-} \ No newline at end of file
+}
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 56fa3d01abc..baf4b8d41e4 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
@@ -48,18 +48,7 @@ public class Container extends AbstractService implements
ComponentsConfig.Producer,
JdiscBindingsConfig.Producer,
ContainerHttpConfig.Producer,
- ContainerMbusConfig.Producer
-{
- public static final class PortOverride {
- public final ComponentSpecification serverId;
- public final int port;
-
- public PortOverride(ComponentSpecification serverId, int port) {
- this.serverId = serverId;
- this.port = port;
- }
- }
-
+ ContainerMbusConfig.Producer {
public static final int BASEPORT = Defaults.getDefaults().vespaWebServicePort();
public static final String SINGLENODE_CONTAINER_SERVICESPEC = "default_singlenode_container";
@@ -80,15 +69,15 @@ public class Container extends AbstractService implements
private final int index;
private final ComponentGroup<Handler<?>> handlers = new ComponentGroup<>(this, "handler");
- private final ComponentGroup<Component<?, ?>> components = new ComponentGroup(this, "components");
+ private final ComponentGroup<Component<?, ?>> components = new ComponentGroup<>(this, "components");
private final JettyHttpServer defaultHttpServer = new JettyHttpServer(new ComponentId("DefaultHttpServer"));
private final List<PortOverride> portOverrides;
private final int numHttpServerPorts;
- private final int numRpcServerPorts = 2;
- private static String defaultHostedJVMArgs = "-XX:+UseOSErrorReporting -XX:+SuppressFatalErrorMessage";
+ private static final int numRpcServerPorts = 2;
+ private static final String defaultHostedJVMArgs = "-XX:+UseOSErrorReporting -XX:+SuppressFatalErrorMessage";
public Container(AbstractConfigProducer parent, String name, int index) {
this(parent, name, Collections.<PortOverride>emptyList(), index);
@@ -218,7 +207,7 @@ public class Container extends AbstractService implements
return (parent instanceof ContainerCluster) && (((ContainerCluster)parent).getDocproc() != null);
}
- // TODO: hack to retain old service names, e.g. in ymon config, vespa.log etc.
+ // TODO: hack to retain old service names, e.g. in monitoring config, vespa.log etc.
@Override
public String getServiceType() {
if (parent instanceof ContainerCluster) {
@@ -404,4 +393,14 @@ public class Container extends AbstractService implements
this.httpServerEnabled = httpServerEnabled;
}
+ public static final class PortOverride {
+ public final ComponentSpecification serverId;
+ public final int port;
+
+ public PortOverride(ComponentSpecification serverId, int port) {
+ this.serverId = serverId;
+ this.port = port;
+ }
+ }
+
}
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 dbae6851977..fdb0f08f631 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
@@ -154,7 +154,7 @@ public final class ContainerCluster
public static final String ROOT_HANDLER_BINDING = "*://*/";
- private String name;
+ private final String name;
private List<Container> containers = new ArrayList<>();
@@ -243,9 +243,9 @@ public final class ContainerCluster
Handler<AbstractConfigProducer<?>> stateHandler = new Handler<>(
new ComponentModel(STATE_HANDLER_CLASS, null, null, null));
stateHandler.addServerBindings("http://*" + StateHandler.STATE_API_ROOT,
- "https://*" + StateHandler.STATE_API_ROOT,
- "http://*" + StateHandler.STATE_API_ROOT + "/*",
- "https://*" + StateHandler.STATE_API_ROOT + "/*");
+ "https://*" + StateHandler.STATE_API_ROOT,
+ "http://*" + StateHandler.STATE_API_ROOT + "/*",
+ "https://*" + StateHandler.STATE_API_ROOT + "/*");
addComponent(stateHandler);
}
@@ -308,12 +308,6 @@ public final class ContainerCluster
}
}
- public final void addComponents(Collection<Component<?, ?>> components) {
- for (Component<?, ?> component : components) {
- addComponent(component);
- }
- }
-
public final void addSimpleComponent(String idSpec, String classSpec, String bundleSpec) {
addComponent(new SimpleComponent(new ComponentModel(idSpec, classSpec, bundleSpec)));
}
@@ -847,14 +841,14 @@ public final class ContainerCluster
}
public static class MbusParams {
- //the amount of the maxpendingbytes to process concurrently, typically 0.2 (20%)
- public final Double maxConcurrentFactor;
+ // the amount of the maxpendingbytes to process concurrently, typically 0.2 (20%)
+ final Double maxConcurrentFactor;
- //the amount that documents expand temporarily when processing them
- public final Double documentExpansionFactor;
+ // the amount that documents expand temporarily when processing them
+ final Double documentExpansionFactor;
- //the space to reserve for container, docproc stuff (memory that cannot be used for processing documents), in MB
- public final Integer containerCoreMemory;
+ // the space to reserve for container, docproc stuff (memory that cannot be used for processing documents), in MB
+ final Integer containerCoreMemory;
public MbusParams(Double maxConcurrentFactor, Double documentExpansionFactor, Integer containerCoreMemory) {
this.maxConcurrentFactor = maxConcurrentFactor;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/http/package-info.java b/config-model/src/main/java/com/yahoo/vespa/model/container/http/package-info.java
index 304a6cd5052..e1671c78a94 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/http/package-info.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/http/package-info.java
@@ -2,4 +2,4 @@
@ExportPackage
package com.yahoo.vespa.model.container.http;
-import com.yahoo.osgi.annotation.ExportPackage; \ No newline at end of file
+import com.yahoo.osgi.annotation.ExportPackage;
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 90ad0117dfb..1ddfbbd76e1 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
@@ -6,6 +6,7 @@ import com.google.common.collect.Sets;
import com.yahoo.config.model.ConfigModelContext;
import com.yahoo.config.model.producer.AbstractConfigProducerRoot;
import com.yahoo.config.provision.ClusterSpec;
+import com.yahoo.config.provision.Environment;
import com.yahoo.config.provision.RegionName;
import com.yahoo.config.provision.Zone;
import com.yahoo.vespa.config.content.MessagetyperouteselectorpolicyConfig;
@@ -46,6 +47,7 @@ import org.w3c.dom.Element;
import java.util.*;
import java.util.logging.Level;
import java.util.stream.Collectors;
+import java.util.stream.Stream;
/**
* A content cluster.
@@ -100,7 +102,7 @@ public class ContentCluster extends AbstractConfigProducer implements StorDistri
ModelElement documentsElement = contentElement.getChild("documents");
Map<String, NewDocumentType> documentDefinitions =
- new SearchDefinitionBuilder().build(context.getParentProducer().getRoot().getDeployState().getDocumentModel().getDocumentManager(), documentsElement);
+ new SearchDefinitionBuilder().build(context.getDeployState().getDocumentModel().getDocumentManager(), documentsElement);
String routingSelection = new DocumentSelectionBuilder().build(documentsElement);
Redundancy redundancy = new RedundancyBuilder().build(contentElement);
@@ -108,7 +110,7 @@ public class ContentCluster extends AbstractConfigProducer implements StorDistri
ContentCluster c = new ContentCluster(context.getParentProducer(), getClusterName(contentElement), documentDefinitions,
globallyDistributedDocuments, routingSelection, redundancy,
- context.getParentProducer().getRoot().getDeployState().getProperties().zone());
+ context.getDeployState().getProperties().zone());
c.clusterControllerConfig = new ClusterControllerConfig.Builder(getClusterName(contentElement), contentElement).build(c, contentElement.getXml());
c.search = new ContentSearchCluster.Builder(documentDefinitions, globallyDistributedDocuments).build(c, contentElement.getXml());
c.persistenceFactory = new EngineFactoryBuilder().build(contentElement, c);
@@ -585,19 +587,27 @@ public class ContentCluster extends AbstractConfigProducer implements StorDistri
/**
* Returns the distribution bits this cluster should use.
- * OnHosted Vespa this is hardcoded not computed from the nodes because reducing the number of nodes is a common
- * operation while reducing the number of distribution bits can lead to consistency problems.
+ * On Hosted Vespa this is hardcoded and not computed from the nodes because reducing the number of nodes is a common
+ * operation, while reducing the number of distribution bits can lead to consistency problems.
* This hardcoded value should work fine from 1-200 nodes. Those who have more will need to set this value
* in config and not remove it again if they reduce the node count.
*/
public int distributionBits() {
- if (zone.region().equals(RegionName.from("us-west-1"))) return 16; // TODO: Enable for all hosted zones (i.e when zone isn't default)
- if (zone.region().equals(RegionName.from("us-central-1"))) return 16; // TODO: Enable for all hosted zones (i.e when zone isn't default)
- if (zone.region().equals(RegionName.from("eu-west-1"))) return 16; // TODO: Enable for all hosted zones (i.e when zone isn't default)
- if (zone.region().equals(RegionName.from("ap-northeast-1"))) return 16; // TODO: Enable for all hosted zones (i.e when zone isn't default)
- if (zone.region().equals(RegionName.from("ap-northeast-2"))) return 16; // TODO: Enable for all hosted zones (i.e when zone isn't default)
- if (zone.region().equals(RegionName.from("us-east-3"))) return 16; // TODO: Enable for all hosted zones (i.e when zone isn't default)
- return DistributionBitCalculator.getDistributionBits(getNodeCountPerGroup(), getDistributionMode());
+ // TODO: Enable for all hosted zones (i.e when zone isn't default)
+ List<Zone> zonesWith16DistributionBits = Arrays.asList(createZone(Environment.prod, "us-west-1"),
+ createZone(Environment.prod, "us-central-1"),
+ createZone(Environment.prod, "eu-west-1"),
+ createZone(Environment.prod, "ap-northeast-1"),
+ createZone(Environment.prod, "ap-northeast-2"),
+ createZone(Environment.prod, "us-east-3"));
+ if (zonesWith16DistributionBits.contains(zone))
+ return 16;
+ else
+ return DistributionBitCalculator.getDistributionBits(getNodeCountPerGroup(), getDistributionMode());
+ }
+
+ private Zone createZone(Environment environment, String region) {
+ return new Zone(environment, RegionName.from(region));
}
@Override
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/utils/FileSender.java b/config-model/src/main/java/com/yahoo/vespa/model/utils/FileSender.java
index 84685ecef3d..f43f579c26b 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/utils/FileSender.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/utils/FileSender.java
@@ -147,4 +147,4 @@ public class FileSender implements Serializable {
builder.setValue(reference.value());
}
-} \ No newline at end of file
+}
diff --git a/config-model/src/test/cfg/application/validation/ranking_constants_fail/services.xml b/config-model/src/test/cfg/application/validation/ranking_constants_fail/services.xml
index 66af18ed7bc..be6672f415f 100644
--- a/config-model/src/test/cfg/application/validation/ranking_constants_fail/services.xml
+++ b/config-model/src/test/cfg/application/validation/ranking_constants_fail/services.xml
@@ -14,4 +14,4 @@
<node hostalias='node1' distribution-key='0'/>
</nodes>
</content>
-</services> \ No newline at end of file
+</services>
diff --git a/config-model/src/test/examples/weightedset-summaryto.sd b/config-model/src/test/examples/weightedset-summaryto.sd
index b72d674e743..adc0ff163ea 100644
--- a/config-model/src/test/examples/weightedset-summaryto.sd
+++ b/config-model/src/test/examples/weightedset-summaryto.sd
@@ -12,4 +12,4 @@ search test {
}
-} \ No newline at end of file
+}
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/derived/EmptyRankProfileTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/derived/EmptyRankProfileTestCase.java
index b790d9e68e8..b7eb1414f6d 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/derived/EmptyRankProfileTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/derived/EmptyRankProfileTestCase.java
@@ -35,4 +35,4 @@ public class EmptyRankProfileTestCase extends SearchDefinitionTestCase {
search = SearchBuilder.buildFromRawSearch(search, rankProfileRegistry);
new DerivedConfiguration(search, rankProfileRegistry);
}
-} \ No newline at end of file
+}
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/ConstantTensorJsonValidatorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/ConstantTensorJsonValidatorTest.java
index 718f4592709..053d2ba87f2 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/ConstantTensorJsonValidatorTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/ConstantTensorJsonValidatorTest.java
@@ -276,4 +276,4 @@ public class ConstantTensorJsonValidatorTest {
"}"));
}
-} \ No newline at end of file
+}
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/RankingConstantsValidatorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/RankingConstantsValidatorTest.java
index c2aee71063d..d126dd0585c 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/RankingConstantsValidatorTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/RankingConstantsValidatorTest.java
@@ -25,4 +25,4 @@ public class RankingConstantsValidatorTest {
new VespaModelCreatorWithFilePkg("src/test/cfg/application/validation/ranking_constants_fail/").create();
}
-} \ No newline at end of file
+}
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/search/IndexingScriptChangeValidatorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/search/IndexingScriptChangeValidatorTest.java
index 0dea99c7b01..3ad3f2c2fdc 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/search/IndexingScriptChangeValidatorTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/search/IndexingScriptChangeValidatorTest.java
@@ -163,4 +163,4 @@ public class IndexingScriptChangeValidatorTest {
validate());
}
-} \ No newline at end of file
+}
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/ContainerClusterTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/ContainerClusterTest.java
index 859dd15e040..9b0e02d580b 100755
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/ContainerClusterTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/ContainerClusterTest.java
@@ -207,7 +207,7 @@ public class ContainerClusterTest {
addContainer(cluster, "c2", "host-c2");
assertTrue(false);
} catch (IllegalArgumentException e) {
- assertTrue(e.getMessage().startsWith("Cluster container1 does not accept container com.yahoo.vespa.model.container.Container"));
+ assertEquals("Cluster container1 does not accept container qrserver on host 'host-c2'", e.getMessage());
}
}
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/content/ClusterTest.java b/config-model/src/test/java/com/yahoo/vespa/model/content/ClusterTest.java
index 126fcf7a583..82cbc338a8e 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/content/ClusterTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/content/ClusterTest.java
@@ -1,8 +1,14 @@
// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.content;
+import com.yahoo.config.model.deploy.DeployProperties;
+import com.yahoo.config.model.deploy.DeployState;
+import com.yahoo.config.model.test.MockRoot;
import com.yahoo.config.model.test.TestDriver;
import com.yahoo.config.model.test.TestRoot;
+import com.yahoo.config.provision.Environment;
+import com.yahoo.config.provision.RegionName;
+import com.yahoo.config.provision.Zone;
import com.yahoo.vespa.config.content.core.StorDistributormanagerConfig;
import com.yahoo.vespa.config.content.StorFilestorConfig;
import com.yahoo.vespa.config.content.core.StorServerConfig;
@@ -14,15 +20,20 @@ import com.yahoo.vespa.model.VespaModel;
import com.yahoo.vespa.model.container.ContainerCluster;
import com.yahoo.vespa.model.content.cluster.ContentCluster;
import com.yahoo.vespa.model.content.engines.ProtonEngine;
+import com.yahoo.vespa.model.content.utils.ContentClusterBuilder;
+import com.yahoo.vespa.model.content.utils.ContentClusterUtils;
+import com.yahoo.vespa.model.content.utils.SearchDefinitionBuilder;
import com.yahoo.vespa.model.test.utils.ApplicationPackageUtils;
import com.yahoo.vespa.model.test.utils.VespaModelCreatorWithMockPkg;
import org.junit.Test;
import java.util.List;
+import static junit.framework.TestCase.assertEquals;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.*;
+// TODO Rename to ContentClusterTest
public class ClusterTest extends ContentBaseTest {
private final static String HOSTS = "<admin version='2.0'><adminserver hostalias='mockhost' /></admin>";
@@ -412,20 +423,8 @@ public class ClusterTest extends ContentBaseTest {
"</content>"
);
- {
- FleetcontrollerConfig.Builder builder = new FleetcontrollerConfig.Builder();
- cluster.getConfig(builder);
- cluster.getClusterControllerConfig().getConfig(builder);
- FleetcontrollerConfig config = new FleetcontrollerConfig(builder);
- assertEquals(8, config.ideal_distribution_bits());
- }
+ assertDistributionBitsInConfig(cluster, 8);
- {
- StorDistributormanagerConfig.Builder builder = new StorDistributormanagerConfig.Builder();
- cluster.getConfig(builder);
- StorDistributormanagerConfig config = new StorDistributormanagerConfig(builder);
- assertEquals(8, config.minsplitcount());
- }
cluster = parse(
"<content version=\"1.0\" id=\"storage\">\n" +
" <documents/>" +
@@ -438,20 +437,7 @@ public class ClusterTest extends ContentBaseTest {
"</content>"
);
- {
- FleetcontrollerConfig.Builder builder = new FleetcontrollerConfig.Builder();
- cluster.getConfig(builder);
- cluster.getClusterControllerConfig().getConfig(builder);
- FleetcontrollerConfig config = new FleetcontrollerConfig(builder);
- assertEquals(8, config.ideal_distribution_bits());
- }
-
- {
- StorDistributormanagerConfig.Builder builder = new StorDistributormanagerConfig.Builder();
- cluster.getConfig(builder);
- StorDistributormanagerConfig config = new StorDistributormanagerConfig(builder);
- assertEquals(8, config.minsplitcount());
- }
+ assertDistributionBitsInConfig(cluster, 8);
}
@Test
@@ -469,20 +455,8 @@ public class ClusterTest extends ContentBaseTest {
"</content>"
);
- {
- FleetcontrollerConfig.Builder builder = new FleetcontrollerConfig.Builder();
- cluster.getConfig(builder);
- cluster.getClusterControllerConfig().getConfig(builder);
- FleetcontrollerConfig config = new FleetcontrollerConfig(builder);
- assertEquals(8, config.ideal_distribution_bits());
- }
+ assertDistributionBitsInConfig(cluster, 8);
- {
- StorDistributormanagerConfig.Builder builder = new StorDistributormanagerConfig.Builder();
- cluster.getConfig(builder);
- StorDistributormanagerConfig config = new StorDistributormanagerConfig(builder);
- assertEquals(8, config.minsplitcount());
- }
cluster = parse(
"<content version=\"1.0\" id=\"storage\">\n" +
" <documents/>" +
@@ -498,23 +472,20 @@ public class ClusterTest extends ContentBaseTest {
"</content>"
);
- {
- FleetcontrollerConfig.Builder builder = new FleetcontrollerConfig.Builder();
- cluster.getConfig(builder);
- cluster.getClusterControllerConfig().getConfig(builder);
- FleetcontrollerConfig config = new FleetcontrollerConfig(builder);
- assertEquals(8, config.ideal_distribution_bits());
- }
-
- {
- StorDistributormanagerConfig.Builder builder = new StorDistributormanagerConfig.Builder();
- cluster.getConfig(builder);
- StorDistributormanagerConfig config = new StorDistributormanagerConfig(builder);
- assertEquals(8, config.minsplitcount());
- }
+ assertDistributionBitsInConfig(cluster, 8);
}
@Test
+ public void testZoneDependentDistributionBits() throws Exception {
+ String xml = new ContentClusterBuilder().docTypes("test").getXml();
+
+ ContentCluster prodWith16Bits = createWithZone(xml, new Zone(Environment.prod, RegionName.from("us-east-3")));
+ assertDistributionBitsInConfig(prodWith16Bits, 16);
+
+ ContentCluster stagingNot16Bits = createWithZone(xml, new Zone(Environment.staging, RegionName.from("us-east-3")));
+ assertDistributionBitsInConfig(stagingNot16Bits, 8);
+ }
+ @Test
public void testGenerateSearchNodes()
{
ContentCluster cluster = parse(
@@ -818,4 +789,31 @@ public class ClusterTest extends ContentBaseTest {
assertThat(cluster.getSearch().getSearchNodes().size(), is(1));
assertTrue(cluster.getSearch().getSearchNodes().get(0).getPreShutdownCommand().isPresent());
}
+
+ private ContentCluster createWithZone(String clusterXml, Zone zone) throws Exception {
+ DeployState.Builder deployStateBuilder = new DeployState.Builder().properties(new DeployProperties.Builder()
+ .hostedVespa(true)
+ .zone(zone)
+ .build());
+ List<String> searchDefinitions = SearchDefinitionBuilder.createSearchDefinitions("test");
+ MockRoot root = ContentClusterUtils.createMockRoot(searchDefinitions, deployStateBuilder);
+ ContentCluster cluster = ContentClusterUtils.createCluster(clusterXml, root);
+ root.freezeModelTopology();
+ cluster.validate();
+ return cluster;
+ }
+
+ private void assertDistributionBitsInConfig(ContentCluster cluster, int distributionBits) {
+ FleetcontrollerConfig.Builder builder = new FleetcontrollerConfig.Builder();
+ cluster.getConfig(builder);
+ cluster.getClusterControllerConfig().getConfig(builder);
+ FleetcontrollerConfig config = new FleetcontrollerConfig(builder);
+ assertEquals(distributionBits, config.ideal_distribution_bits());
+
+ StorDistributormanagerConfig.Builder sdBuilder = new StorDistributormanagerConfig.Builder();
+ cluster.getConfig(sdBuilder);
+ StorDistributormanagerConfig storDistributormanagerConfig = new StorDistributormanagerConfig(sdBuilder);
+ assertEquals(distributionBits, storDistributormanagerConfig.minsplitcount());
+ }
+
}
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/content/utils/ContentClusterUtils.java b/config-model/src/test/java/com/yahoo/vespa/model/content/utils/ContentClusterUtils.java
index 595013c506e..aebe1b76644 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/content/utils/ContentClusterUtils.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/content/utils/ContentClusterUtils.java
@@ -2,10 +2,8 @@
package com.yahoo.vespa.model.content.utils;
import com.yahoo.config.application.api.ApplicationPackage;
-import com.yahoo.config.application.api.DeployLogger;
import com.yahoo.config.model.ConfigModelContext;
import com.yahoo.config.model.api.HostProvisioner;
-import com.yahoo.config.model.application.provider.BaseDeployLogger;
import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.config.model.provision.InMemoryProvisioner;
import com.yahoo.config.model.provision.SingleNodeProvisioner;
@@ -34,14 +32,17 @@ public class ContentClusterUtils {
}
private static MockRoot createMockRoot(HostProvisioner provisioner, List<String> searchDefinitions) {
- ApplicationPackage applicationPackage = new MockApplicationPackage.Builder().withSearchDefinitions(searchDefinitions).build();
- DeployState deployState = new DeployState.Builder()
- .applicationPackage(applicationPackage)
- .modelHostProvisioner(provisioner)
- .build();
- return new MockRoot("", deployState);
+ return createMockRoot(provisioner, searchDefinitions, new DeployState.Builder());
+ }
+ private static MockRoot createMockRoot(HostProvisioner provisioner, List<String> searchDefinitions, DeployState.Builder deployStateBuilder) {
+ ApplicationPackage applicationPackage = new MockApplicationPackage.Builder().withSearchDefinitions(searchDefinitions).build();
+ deployStateBuilder.applicationPackage(applicationPackage)
+ .modelHostProvisioner(provisioner)
+ .build();
+ return new MockRoot("", deployStateBuilder.build());
}
+
public static MockRoot createMockRoot(String[] hosts, List<String> searchDefinitions) throws Exception {
return createMockRoot(new InMemoryProvisioner(true, hosts), searchDefinitions);
}
@@ -50,10 +51,14 @@ public class ContentClusterUtils {
return createMockRoot(new SingleNodeProvisioner(), searchDefinitions);
}
+ public static MockRoot createMockRoot(List<String> searchDefinitions, DeployState.Builder deployStateBuilder) {
+ return createMockRoot(new SingleNodeProvisioner(), searchDefinitions, deployStateBuilder);
+ }
+
public static ContentCluster createCluster(String clusterXml, MockRoot root) throws Exception {
Document doc = XML.getDocument(clusterXml);
Admin admin = new Admin(root, new Yamas("vespa", 60), new Metrics(), Collections.emptyMap(), false);
- ConfigModelContext context = ConfigModelContext.create(null, DeployState.createTestState(), null, root, null);
+ ConfigModelContext context = ConfigModelContext.create(null, root.getDeployState(), null, root, null);
return new ContentCluster.Builder(admin).build(Collections.emptyList(), context, doc.getDocumentElement());
}
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/generic/GenericServicesModelTest.java b/config-model/src/test/java/com/yahoo/vespa/model/generic/GenericServicesModelTest.java
index d58e005e2ae..77019689e0a 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/generic/GenericServicesModelTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/generic/GenericServicesModelTest.java
@@ -59,4 +59,4 @@ public class GenericServicesModelTest {
assertThat(gsModel.serviceClusters().get(0).services().size(), is(1));
}
-} \ No newline at end of file
+}
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/test/PortsMetaTestCase.java b/config-model/src/test/java/com/yahoo/vespa/model/test/PortsMetaTestCase.java
index 40dc134190b..d9f8800ef77 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/test/PortsMetaTestCase.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/test/PortsMetaTestCase.java
@@ -34,4 +34,4 @@ public class PortsMetaTestCase extends junit.framework.TestCase {
assertNull(pm.getHttpStatusOffset());
}
-} \ No newline at end of file
+}