summaryrefslogtreecommitdiffstats
path: root/config-model
diff options
context:
space:
mode:
Diffstat (limited to 'config-model')
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/deploy/DeployState.java9
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/deploy/TestProperties.java13
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/AbstractService.java6
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/HostResource.java9
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/PortAllocBridge.java7
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/PortFinder.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/VespaModel.java1
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV2Builder.java18
-rwxr-xr-xconfig-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java1
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/search/QueryProfiles.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java9
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/ContentNode.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/ContentSearchCluster.java9
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/DispatchTuning.java2
-rw-r--r--config-model/src/test/java/com/yahoo/config/model/provision/ModelProvisioningTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/IndexingModeChangeValidatorTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/ContentBuilderTest.java34
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/search/test/QueryProfilesTestCase.java4
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/xml/AccessLogTest.java5
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilderTest.java3
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/test/VespaModelTester.java2
21 files changed, 97 insertions, 45 deletions
diff --git a/config-model/src/main/java/com/yahoo/config/model/deploy/DeployState.java b/config-model/src/main/java/com/yahoo/config/model/deploy/DeployState.java
index 046eef65eb5..8befbb48016 100644
--- a/config-model/src/main/java/com/yahoo/config/model/deploy/DeployState.java
+++ b/config-model/src/main/java/com/yahoo/config/model/deploy/DeployState.java
@@ -156,10 +156,11 @@ public class DeployState implements ConfigDefinitionStore {
}
public static HostProvisioner getDefaultModelHostProvisioner(ApplicationPackage applicationPackage) {
- if (applicationPackage.getHosts() == null) {
- return new SingleNodeProvisioner();
- } else {
- return new HostsXmlProvisioner(applicationPackage.getHosts());
+ try (Reader hostsReader = applicationPackage.getHosts()) {
+ return hostsReader == null ? new SingleNodeProvisioner() : new HostsXmlProvisioner(hostsReader);
+ }
+ catch (IOException e) {
+ throw new IllegalStateException("Could not read hosts.xml", e);
}
}
diff --git a/config-model/src/main/java/com/yahoo/config/model/deploy/TestProperties.java b/config-model/src/main/java/com/yahoo/config/model/deploy/TestProperties.java
index 397b11661e5..d0e8afa5616 100644
--- a/config-model/src/main/java/com/yahoo/config/model/deploy/TestProperties.java
+++ b/config-model/src/main/java/com/yahoo/config/model/deploy/TestProperties.java
@@ -41,6 +41,7 @@ public class TestProperties implements ModelContext.Properties, ModelContext.Fea
private String sequencerType = "LATENCY";
private String responseSequencerType = "ADAPTIVE";
private int responseNumThreads = 2;
+ private int maxPendingMoveOps = 10;
private Optional<EndpointCertificateSecrets> endpointCertificateSecrets = Optional.empty();
private AthenzDomain athenzDomain;
private ApplicationRoles applicationRoles;
@@ -51,6 +52,7 @@ public class TestProperties implements ModelContext.Properties, ModelContext.Fea
private boolean enableAutomaticReindexing = false;
private boolean reconfigurableZookeeperServer = false;
private boolean useBucketExecutorForLidSpaceCompact;
+ private boolean useBucketExecutorForBucketMove;
private boolean enableFeedBlockInDistributor = false;
private double maxDeadBytesRatio = 0.2;
private int clusterControllerMaxHeapSizeInMb = 512;
@@ -77,6 +79,7 @@ public class TestProperties implements ModelContext.Properties, ModelContext.Fea
@Override public Optional<ApplicationRoles> applicationRoles() { return Optional.ofNullable(applicationRoles); }
@Override public String responseSequencerType() { return responseSequencerType; }
@Override public int defaultNumResponseThreads() { return responseNumThreads; }
+ @Override public int maxPendingMoveOps() { return maxPendingMoveOps; }
@Override public boolean skipCommunicationManagerThread() { return false; }
@Override public boolean skipMbusRequestThread() { return false; }
@Override public boolean skipMbusReplyThread() { return false; }
@@ -87,6 +90,7 @@ public class TestProperties implements ModelContext.Properties, ModelContext.Fea
@Override public boolean enableAutomaticReindexing() { return enableAutomaticReindexing; }
@Override public boolean reconfigurableZookeeperServer() { return reconfigurableZookeeperServer; }
@Override public boolean useBucketExecutorForLidSpaceCompact() { return useBucketExecutorForLidSpaceCompact; }
+ @Override public boolean useBucketExecutorForBucketMove() { return useBucketExecutorForBucketMove; }
@Override public boolean enableFeedBlockInDistributor() { return enableFeedBlockInDistributor; }
@Override public double maxDeadBytesRatio() { return maxDeadBytesRatio; }
@Override public int clusterControllerMaxHeapSizeInMb() { return clusterControllerMaxHeapSizeInMb; }
@@ -117,6 +121,10 @@ public class TestProperties implements ModelContext.Properties, ModelContext.Fea
responseNumThreads = numThreads;
return this;
}
+ public TestProperties setMaxPendingMoveOps(int moveOps) {
+ maxPendingMoveOps = moveOps;
+ return this;
+ }
public TestProperties setDefaultTermwiseLimit(double limit) {
defaultTermwiseLimit = limit;
return this;
@@ -194,6 +202,11 @@ public class TestProperties implements ModelContext.Properties, ModelContext.Fea
return this;
}
+ public TestProperties useBucketExecutorForBucketMove(boolean enabled) {
+ useBucketExecutorForBucketMove = enabled;
+ return this;
+ }
+
public TestProperties enableFeedBlockInDistributor(boolean enabled) {
enableFeedBlockInDistributor = enabled;
return this;
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 04660f2b990..6e16b1a120e 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
@@ -194,16 +194,14 @@ public abstract class AbstractService extends AbstractConfigProducer<AbstractCon
}
/**
- * Gets the ports metainfo object. The service implementation
- * must populate this object in the constructor.
+ * Gets the ports metainfo object. The service implementation must populate this object in the constructor.
*/
public PortsMeta getPortsMeta() {
return portsMeta;
}
/**
- * Computes and returns the i'th port for this service, based on
- * this Service's baseport.
+ * Computes and returns the i'th port for this service, based on this Service's baseport.
*
* @param i the offset from 'basePort' of the port to return
* @return the i'th port relative to the base port.
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 27fb0f444ef..78d9dd473b3 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
@@ -10,6 +10,7 @@ import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
import java.util.Optional;
import java.util.stream.Collectors;
@@ -67,9 +68,11 @@ public class HostResource implements Comparable<HostResource> {
List<Integer> allocateService(DeployLogger deployLogger, AbstractService service, int wantedPort) {
ports().useLogger(deployLogger);
List<Integer> ports = hostPorts.allocatePorts(service, wantedPort);
- assert (getService(service.getServiceName()) == null) :
- ("There is already a service with name '" + service.getServiceName() + "' registered on " + this +
- ". Most likely a programming error - all service classes must have unique names, even in different packages!");
+ if (getService(service.getServiceName()) != null)
+ throw new IllegalStateException("There is already a service with name '" + service.getServiceName() +
+ "' registered on " + this + ". " +
+ "Most likely a programming error - " +
+ "all service classes must have unique names, even in different packages!");
services.put(service.getServiceName(), service);
return ports;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/PortAllocBridge.java b/config-model/src/main/java/com/yahoo/vespa/model/PortAllocBridge.java
index ac518b3a7d9..87db852e682 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/PortAllocBridge.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/PortAllocBridge.java
@@ -10,13 +10,14 @@ import java.util.List;
* This class acts as a bridge between NetworkPortRequestor and HostPorts
* for a single call to allocatePorts(), gathering the resulting port
* allocations in a list of integers.
+ *
* @author arnej
*/
public class PortAllocBridge {
- private HostPorts host;
- private NetworkPortRequestor service;
- private List<Integer> ports = new ArrayList<>();
+ private final HostPorts host;
+ private final NetworkPortRequestor service;
+ private final List<Integer> ports = new ArrayList<>();
public PortAllocBridge(HostPorts host, NetworkPortRequestor service) {
this.host = host;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/PortFinder.java b/config-model/src/main/java/com/yahoo/vespa/model/PortFinder.java
index 3d5cbcd0e6e..968f8399e4b 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/PortFinder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/PortFinder.java
@@ -41,7 +41,7 @@ public class PortFinder {
String key = request.key();
if (byKeys.containsKey(key)) {
int port = byKeys.get(key).port;
- log.log(Level.FINE, "Re-using port "+port+" for allocation "+request+" on "+host);
+ log.log(Level.FINE, "Re-using port "+port+" for allocation " + request + " on " + host);
return port;
}
int port = request.port;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/VespaModel.java b/config-model/src/main/java/com/yahoo/vespa/model/VespaModel.java
index 660c47d037d..44bade4cd84 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/VespaModel.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/VespaModel.java
@@ -418,7 +418,6 @@ public final class VespaModel extends AbstractConfigProducerRoot implements Seri
* @param configId the config id for the config client
* @return the builder if a producer was found, and it did apply config, null otherwise
*/
- @SuppressWarnings("unchecked")
@Override
public ConfigInstance.Builder getConfig(ConfigInstance.Builder builder, String configId) {
checkId(configId);
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV2Builder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV2Builder.java
index 3879df52390..e37f558c2ce 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV2Builder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV2Builder.java
@@ -134,7 +134,7 @@ public class DomAdminV2Builder extends DomAdminBuilderBase {
return cfgs;
}
- private List<Slobrok> getSlobroks(DeployState deployState, AbstractConfigProducer parent, Element slobroksE) {
+ private List<Slobrok> getSlobroks(DeployState deployState, AbstractConfigProducer<?> parent, Element slobroksE) {
List<Slobrok> slobs = new ArrayList<>();
if (slobroksE != null) {
slobs = getExplicitSlobrokSetup(deployState, parent, slobroksE);
@@ -142,16 +142,12 @@ public class DomAdminV2Builder extends DomAdminBuilderBase {
return slobs;
}
- private List<Slobrok> getExplicitSlobrokSetup(DeployState deployState, AbstractConfigProducer parent, Element slobroksE) {
- List<Slobrok> slobs = new ArrayList<>();
- List<Element> slobsE = XML.getChildren(slobroksE, "slobrok");
+ private List<Slobrok> getExplicitSlobrokSetup(DeployState deployState, AbstractConfigProducer<?> parent, Element slobroksE) {
+ List<Slobrok> slobroks = new ArrayList<>();
int i = 0;
- for (Element e : slobsE) {
- Slobrok slob = new SlobrokBuilder(i).build(deployState, parent, e);
- slobs.add(slob);
- i++;
- }
- return slobs;
+ for (Element e : XML.getChildren(slobroksE, "slobrok"))
+ slobroks.add(new SlobrokBuilder(i++).build(deployState, parent, e));
+ return slobroks;
}
private static class LogserverBuilder extends DomConfigProducerBuilder<Logserver> {
@@ -184,6 +180,7 @@ public class DomAdminV2Builder extends DomAdminBuilderBase {
}
private static class SlobrokBuilder extends DomConfigProducerBuilder<Slobrok> {
+
int i;
public SlobrokBuilder(int i) {
@@ -194,6 +191,7 @@ public class DomAdminV2Builder extends DomAdminBuilderBase {
protected Slobrok doBuild(DeployState deployState, AbstractConfigProducer parent, Element spec) {
return new Slobrok(parent, i);
}
+
}
private static class ClusterControllerBuilder extends DomConfigProducerBuilder<ClusterControllerContainer> {
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 42af94b1d8e..a1db3c43f1c 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
@@ -187,6 +187,7 @@ public abstract class ContainerCluster<CONTAINER extends Container>
addSimpleComponent("com.yahoo.container.jdisc.ContainerThreadFactory");
addSimpleComponent("com.yahoo.container.handler.VipStatus");
addSimpleComponent(com.yahoo.container.handler.ClustersStatus.class.getName());
+ addSimpleComponent("com.yahoo.container.jdisc.DisabledConnectionLogProvider");
addJaxProviders();
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/search/QueryProfiles.java b/config-model/src/main/java/com/yahoo/vespa/model/container/search/QueryProfiles.java
index 4736a207659..a001d66bc7b 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/search/QueryProfiles.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/search/QueryProfiles.java
@@ -70,7 +70,7 @@ public class QueryProfiles implements Serializable, QueryProfilesConfig.Producer
? ""
: "In particular, the tensors (" + String.join(", ", tensorFields) +
") will be interpreted as strings, not tensors if sent in requests. ") +
- "See https://docs.vespa.ai/documentation/query-profiles.html");
+ "See https://docs.vespa.ai/en/query-profiles.html");
}
}
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 d9543c2e917..0c0c3f59e88 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
@@ -31,7 +31,6 @@ import com.yahoo.config.provision.NodeResources;
import com.yahoo.config.provision.NodeType;
import com.yahoo.config.provision.Zone;
import com.yahoo.container.logging.FileConnectionLog;
-import com.yahoo.jdisc.http.server.jetty.VoidConnectionLog;
import com.yahoo.osgi.provider.model.ComponentModel;
import com.yahoo.search.rendering.RendererRegistry;
import com.yahoo.searchdefinition.derived.RankProfileList;
@@ -350,8 +349,6 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> {
// Add connection log if access log is configured
if (cluster.getAllComponents().stream().anyMatch(component -> component instanceof AccessLogComponent)) {
cluster.addComponent(new ConnectionLogComponent(cluster, FileConnectionLog.class, "qrs"));
- } else {
- cluster.addComponent(new ConnectionLogComponent(cluster, VoidConnectionLog.class, "qrs"));
}
}
@@ -387,7 +384,7 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> {
if (deployState.endpointCertificateSecrets().isPresent()) {
boolean authorizeClient = deployState.zone().system().isPublic();
if (authorizeClient && deployState.tlsClientAuthority().isEmpty()) {
- throw new RuntimeException("Client certificate authority security/clients.pem is missing - see: https://cloud.vespa.ai/security-model#data-plane");
+ throw new RuntimeException("Client certificate authority security/clients.pem is missing - see: https://cloud.vespa.ai/en/security-model#data-plane");
}
EndpointCertificateSecrets endpointCertificateSecrets = deployState.endpointCertificateSecrets().get();
@@ -725,7 +722,9 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> {
var hosts = hostSystem.allocateHosts(clusterSpec, capacity, log);
return createNodesFromHosts(log, hosts, cluster);
}
- return singleHostContainerCluster(cluster, hostSystem.getHost(Container.SINGLENODE_CONTAINER_SERVICESPEC), context);
+ else {
+ return singleHostContainerCluster(cluster, hostSystem.getHost(Container.SINGLENODE_CONTAINER_SERVICESPEC), context);
+ }
}
private List<ApplicationContainer> singleHostContainerCluster(ApplicationContainerCluster cluster, HostResource host, ConfigModelContext context) {
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/ContentNode.java b/config-model/src/main/java/com/yahoo/vespa/model/content/ContentNode.java
index 705d2dc668d..37a2ef224fc 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/ContentNode.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/ContentNode.java
@@ -14,8 +14,6 @@ import com.yahoo.vespa.model.application.validation.RestartConfigs;
/**
* Common class for config producers for storage and distributor nodes.
- *
- * TODO: Author
*/
@RestartConfigs({StorCommunicationmanagerConfig.class, StorStatusConfig.class,
StorServerConfig.class, LoadTypeConfig.class, MetricsmanagerConfig.class})
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/ContentSearchCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/content/ContentSearchCluster.java
index 0fdd39e70cf..0de111e459e 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/ContentSearchCluster.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/ContentSearchCluster.java
@@ -12,7 +12,6 @@ import com.yahoo.vespa.model.builder.xml.dom.DomSearchTuningBuilder;
import com.yahoo.vespa.model.builder.xml.dom.ModelElement;
import com.yahoo.vespa.model.builder.xml.dom.VespaDomBuilder;
import com.yahoo.vespa.model.content.cluster.ContentCluster;
-import com.yahoo.vespa.model.content.cluster.DomResourceLimitsBuilder;
import com.yahoo.vespa.model.search.AbstractSearchCluster;
import com.yahoo.vespa.model.search.IndexedSearchCluster;
import com.yahoo.vespa.model.search.NamedSchema;
@@ -64,8 +63,10 @@ public class ContentSearchCluster extends AbstractConfigProducer<SearchCluster>
private final Map<StorageGroup, NodeSpec> groupToSpecMap = new LinkedHashMap<>();
private Optional<ResourceLimits> resourceLimits = Optional.empty();
private final ProtonConfig.Indexing.Optimize.Enum feedSequencerType;
+ private final int maxPendingMoveOps;
private final double defaultFeedConcurrency;
private final boolean useBucketExecutorForLidSpaceCompact;
+ private final boolean useBucketExecutorForBucketMove;
private final double defaultMaxDeadBytesRatio;
/** Whether the nodes of this cluster also hosts a container cluster in a hosted system */
@@ -204,9 +205,11 @@ public class ContentSearchCluster extends AbstractConfigProducer<SearchCluster>
this.globallyDistributedDocuments = globallyDistributedDocuments;
this.flushOnShutdown = flushOnShutdown;
this.combined = combined;
+ maxPendingMoveOps = featureFlags.maxPendingMoveOps();
feedSequencerType = convertFeedSequencerType(featureFlags.feedSequencerType());
defaultFeedConcurrency = featureFlags.feedConcurrency();
useBucketExecutorForLidSpaceCompact = featureFlags.useBucketExecutorForLidSpaceCompact();
+ useBucketExecutorForBucketMove = featureFlags.useBucketExecutorForBucketMove();
defaultMaxDeadBytesRatio = featureFlags.maxDeadBytesRatio();
}
@@ -263,7 +266,7 @@ public class ContentSearchCluster extends AbstractConfigProducer<SearchCluster>
}
public void addSearchNode(DeployState deployState, ContentNode node, StorageGroup parentGroup, ModelElement element) {
- AbstractConfigProducer parent = hasIndexedCluster() ? getIndexed() : this;
+ AbstractConfigProducer<?> parent = hasIndexedCluster() ? getIndexed() : this;
NodeSpec spec = getNextSearchNodeSpec(parentGroup);
SearchNode searchNode;
@@ -429,7 +432,9 @@ public class ContentSearchCluster extends AbstractConfigProducer<SearchCluster>
} else {
builder.indexing.optimize(feedSequencerType);
}
+ builder.maintenancejobs.maxoutstandingmoveops(maxPendingMoveOps);
builder.lidspacecompaction.usebucketexecutor(useBucketExecutorForLidSpaceCompact);
+ builder.bucketmove.usebucketexecutor(useBucketExecutorForBucketMove);
}
private boolean isGloballyDistributed(NewDocumentType docType) {
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/DispatchTuning.java b/config-model/src/main/java/com/yahoo/vespa/model/content/DispatchTuning.java
index 0f9eb5341ab..3b694f8986c 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/DispatchTuning.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/DispatchTuning.java
@@ -3,7 +3,7 @@ package com.yahoo.vespa.model.content;
/**
* Tuning of dispatching to content nodes, see the
- * <a href="https://docs.vespa.ai/documentation/reference/services-content.html#dispatch-tuning">dispatch tuning documentation</a>.
+ * <a href="https://docs.vespa.ai/en/reference/services-content.html#dispatch-tuning">dispatch tuning documentation</a>.
*
* @author Simon Thoresen Hult
*/
diff --git a/config-model/src/test/java/com/yahoo/config/model/provision/ModelProvisioningTest.java b/config-model/src/test/java/com/yahoo/config/model/provision/ModelProvisioningTest.java
index be272e05bf5..3e6a3332f9a 100644
--- a/config-model/src/test/java/com/yahoo/config/model/provision/ModelProvisioningTest.java
+++ b/config-model/src/test/java/com/yahoo/config/model/provision/ModelProvisioningTest.java
@@ -14,6 +14,7 @@ import com.yahoo.config.provision.RegionName;
import com.yahoo.config.provision.Zone;
import com.yahoo.container.core.ApplicationMetadataConfig;
import com.yahoo.search.config.QrStartConfig;
+import com.yahoo.vespa.config.content.core.StorStatusConfig;
import com.yahoo.vespa.config.search.core.ProtonConfig;
import com.yahoo.vespa.model.HostResource;
import com.yahoo.vespa.model.HostSystem;
@@ -1511,6 +1512,7 @@ public class ModelProvisioningTest {
assertEquals("Nodes in container cluster", 1, model.getContainerClusters().get("container1").getContainers().size());
assertEquals("Nodes in content cluster (downscaled)", 1, model.getContentClusters().get("content").getRootGroup().getNodes().size());
+ model.getConfig(new StorStatusConfig.Builder(), "default");
}
@Test
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/IndexingModeChangeValidatorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/IndexingModeChangeValidatorTest.java
index ba9dfcdc388..d5c7fb78c89 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/IndexingModeChangeValidatorTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/IndexingModeChangeValidatorTest.java
@@ -37,7 +37,7 @@ public class IndexingModeChangeValidatorTest {
catch (ValidationException e) {
assertEquals("indexing-mode-change:\n" +
"\tDocument type 'music' in cluster 'default' changed indexing mode from 'indexed' to 'streaming'\n" +
- "To allow this add <allow until='yyyy-mm-dd'>indexing-mode-change</allow> to validation-overrides.xml, see https://docs.vespa.ai/documentation/reference/validation-overrides.html",
+ "To allow this add <allow until='yyyy-mm-dd'>indexing-mode-change</allow> to validation-overrides.xml, see https://docs.vespa.ai/en/reference/validation-overrides.html",
e.getMessage());
}
}
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/ContentBuilderTest.java b/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/ContentBuilderTest.java
index 55234a3a96e..3a3dde0cf87 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/ContentBuilderTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/ContentBuilderTest.java
@@ -835,6 +835,34 @@ public class ContentBuilderTest extends DomBuilderTest {
assertEquals(flag, config.lidspacecompaction().usebucketexecutor());
}
+ private void verifyThatFeatureFlagControlsUseBucketExecutorForBucketMove(boolean flag) {
+ DeployState.Builder deployStateBuilder = new DeployState.Builder().properties(new TestProperties().useBucketExecutorForBucketMove(flag));
+ VespaModel model = new VespaModelCreatorWithMockPkg(new MockApplicationPackage.Builder()
+ .withServices(singleNodeContentXml())
+ .withSearchDefinition(MockApplicationPackage.MUSIC_SEARCHDEFINITION)
+ .build())
+ .create(deployStateBuilder);
+ ProtonConfig config = getProtonConfig(model.getContentClusters().values().iterator().next());
+ assertEquals(flag, config.bucketmove().usebucketexecutor());
+ }
+
+ private void verifyThatFeatureFlagControlsMaxpendingMoveOps(int moveOps) {
+ DeployState.Builder deployStateBuilder = new DeployState.Builder().properties(new TestProperties().setMaxPendingMoveOps(moveOps));
+ VespaModel model = new VespaModelCreatorWithMockPkg(new MockApplicationPackage.Builder()
+ .withServices(singleNodeContentXml())
+ .withSearchDefinition(MockApplicationPackage.MUSIC_SEARCHDEFINITION)
+ .build())
+ .create(deployStateBuilder);
+ ProtonConfig config = getProtonConfig(model.getContentClusters().values().iterator().next());
+ assertEquals(moveOps, config.maintenancejobs().maxoutstandingmoveops());
+ }
+
+ @Test
+ public void verifyMaxPendingMoveOps() {
+ verifyThatFeatureFlagControlsMaxpendingMoveOps(13);
+ verifyThatFeatureFlagControlsMaxpendingMoveOps(107);
+ }
+
@Test
public void verifyUseBucketExecutorForLidSpaceCompact() {
verifyThatFeatureFlagControlsUseBucketExecutorForLidSpaceCompact(true);
@@ -842,6 +870,12 @@ public class ContentBuilderTest extends DomBuilderTest {
}
@Test
+ public void verifyUseBucketExecutorForBucketMove() {
+ verifyThatFeatureFlagControlsUseBucketExecutorForBucketMove(true);
+ verifyThatFeatureFlagControlsUseBucketExecutorForBucketMove(false);
+ }
+
+ @Test
public void failWhenNoDocumentsElementSpecified() {
expectedException.expect(IllegalArgumentException.class);
expectedException.expectMessage("The specified content engine requires the <documents> element to be specified.");
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/QueryProfilesTestCase.java b/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/QueryProfilesTestCase.java
index d1d32df5b56..fc6c5aeb387 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/QueryProfilesTestCase.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/search/test/QueryProfilesTestCase.java
@@ -151,7 +151,7 @@ public class QueryProfilesTestCase {
assertEquals(1, logger.entries.size());
assertEquals("This application define query profile types, but has no query profiles referencing them " +
"so they have no effect. " +
- "See https://docs.vespa.ai/documentation/query-profiles.html",
+ "See https://docs.vespa.ai/en/query-profiles.html",
logger.entries.get(0).message);
}
@@ -171,7 +171,7 @@ public class QueryProfilesTestCase {
assertEquals("This application define query profile types, but has no query profiles referencing them " +
"so they have no effect. " +
"In particular, the tensors (vector, matrix) will be interpreted as strings, not tensors if sent in requests. " +
- "See https://docs.vespa.ai/documentation/query-profiles.html",
+ "See https://docs.vespa.ai/en/query-profiles.html",
logger.entries.get(0).message);
}
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/AccessLogTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/AccessLogTest.java
index 56f09eefe82..f3f3b2b1076 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/AccessLogTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/AccessLogTest.java
@@ -8,16 +8,15 @@ import com.yahoo.container.logging.ConnectionLogConfig;
import com.yahoo.container.logging.FileConnectionLog;
import com.yahoo.container.logging.JSONAccessLog;
import com.yahoo.container.logging.VespaAccessLog;
-import com.yahoo.jdisc.http.server.jetty.VoidConnectionLog;
import com.yahoo.vespa.model.container.ApplicationContainerCluster;
import com.yahoo.vespa.model.container.component.Component;
import org.junit.Test;
import org.w3c.dom.Element;
import static com.yahoo.text.StringUtilities.quote;
+import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertEquals;
/**
* @author gjoranv
@@ -127,8 +126,6 @@ public class AccessLogTest extends ContainerModelBuilderTestBase {
nodesXml,
"</container>" );
createModel(root, clusterElem);
- Component<?, ?> voidConnectionLogComponent = getContainerComponent("default", VoidConnectionLog.class.getName());
- assertNotNull(voidConnectionLogComponent);
Component<?, ?> fileConnectionLogComponent = getContainerComponent("default", FileConnectionLog.class.getName());
assertNull(fileConnectionLogComponent);
}
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilderTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilderTest.java
index 35257686a5a..e0e4cbf19c0 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilderTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilderTest.java
@@ -728,7 +728,8 @@ public class ContainerModelBuilderTest extends ContainerModelBuilderTestBase {
.build();
createModel(root, state, null, clusterElem);
} catch (RuntimeException e) {
- assertEquals(e.getMessage(), "Client certificate authority security/clients.pem is missing - see: https://cloud.vespa.ai/security-model#data-plane");
+ assertEquals("Client certificate authority security/clients.pem is missing - see: https://cloud.vespa.ai/en/security-model#data-plane",
+ e.getMessage());
return;
}
fail();
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/test/VespaModelTester.java b/config-model/src/test/java/com/yahoo/vespa/model/test/VespaModelTester.java
index 7484095c5bc..ce8d2c193b9 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/test/VespaModelTester.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/test/VespaModelTester.java
@@ -6,12 +6,14 @@ import com.yahoo.config.application.api.ApplicationPackage;
import com.yahoo.config.model.ConfigModelRegistry;
import com.yahoo.config.model.NullConfigModelRegistry;
import com.yahoo.config.model.api.HostProvisioner;
+import com.yahoo.config.model.api.Provisioned;
import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.config.model.deploy.TestProperties;
import com.yahoo.config.model.provision.Host;
import com.yahoo.config.model.provision.Hosts;
import com.yahoo.config.model.provision.InMemoryProvisioner;
import com.yahoo.config.model.provision.SingleNodeProvisioner;
+import com.yahoo.config.provision.AllocatedHosts;
import com.yahoo.config.provision.ApplicationId;
import com.yahoo.config.provision.Flavor;
import com.yahoo.config.provision.NodeResources;