aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cloud-tenant-base-dependencies-enforcer/pom.xml5
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/provision/InMemoryProvisioner.java4
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedBlock.java4
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedDocument.java7
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedType.java55
-rw-r--r--config-model/src/test/java/com/yahoo/config/model/provision/ModelProvisioningTest.java87
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/parser/IntermediateParserTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/parser/ParsedDocumentTestCase.java5
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerClusterTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerTest.java2
-rw-r--r--config/src/vespa/config/frt/frtconnectionpool.cpp12
-rw-r--r--configutil/src/apps/configstatus/main.cpp2
-rw-r--r--configutil/src/lib/configstatus.cpp2
-rw-r--r--configutil/src/lib/configstatus.h2
-rw-r--r--configutil/src/lib/modelinspect.cpp2
-rw-r--r--configutil/src/lib/modelinspect.h2
-rw-r--r--container-dependencies-enforcer/pom.xml4
-rw-r--r--container-dependency-versions/pom.xml4
-rw-r--r--container-disc/pom.xml4
-rw-r--r--container-search/abi-spec.json2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/Item.java5
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/IssueHandler.java8
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/MockIssueHandler.java10
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/ProjectInfo.java31
-rw-r--r--dist/vespa.spec1
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/PermanentFlags.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/AllocationOptimizer.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/Limits.java5
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/PassthroughLoadBalancerService.java44
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/SharedLoadBalancerService.java29
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRepositoryMaintenance.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/CapacityPolicies.java18
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/EmptyProvisionServiceProvider.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeRepositoryProvisioner.java20
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisionServiceProvider.java3
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockProvisionServiceProvider.java3
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/AutoscalingTest.java3
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/lb/PassthroughLoadBalancerServiceTest.java30
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/lb/SharedLoadBalancerServiceTest.java15
-rw-r--r--searchlib/src/vespa/searchlib/parsequery/parse.h4
-rw-r--r--searchsummary/src/tests/extractkeywords/simplequerystackitem.cpp3
-rw-r--r--vespa_jersey2/pom.xml42
-rw-r--r--vespamalloc/src/tests/test1/testatomic.cpp26
43 files changed, 260 insertions, 257 deletions
diff --git a/cloud-tenant-base-dependencies-enforcer/pom.xml b/cloud-tenant-base-dependencies-enforcer/pom.xml
index bb54509852a..77a3a9958ec 100644
--- a/cloud-tenant-base-dependencies-enforcer/pom.xml
+++ b/cloud-tenant-base-dependencies-enforcer/pom.xml
@@ -50,7 +50,6 @@
<javax.validation-api.version>1.1.0.Final</javax.validation-api.version>
<javax.ws.rs-api.version>2.0.1</javax.ws.rs-api.version>
<jersey2.version>2.25</jersey2.version>
- <mimepull.version>1.9.6</mimepull.version>
</properties>
<build>
@@ -123,13 +122,9 @@
<include>org.glassfish.jersey.core:jersey-client:[${jersey2.version}]:jar:provided</include>
<include>org.glassfish.jersey.core:jersey-common:[${jersey2.version}]:jar:provided</include>
<include>org.glassfish.jersey.core:jersey-server:[${jersey2.version}]:jar:provided</include>
- <include>org.glassfish.jersey.ext:jersey-entity-filtering:[${jersey2.version}]:jar:provided</include>
<include>org.glassfish.jersey.ext:jersey-proxy-client:[${jersey2.version}]:jar:provided</include>
- <include>org.glassfish.jersey.media:jersey-media-json-jackson:[${jersey2.version}]:jar:provided</include>
- <include>org.glassfish.jersey.media:jersey-media-multipart:[${jersey2.version}]:jar:provided</include>
<include>org.javassist:javassist:[${javassist.version}]:jar:provided</include>
<include>org.json:json:[${org.json.version}]:jar:provided</include>
- <include>org.jvnet.mimepull:mimepull:[${mimepull.version}]:jar:provided</include>
<include>org.slf4j:jcl-over-slf4j:[${slf4j.version}]:jar:provided</include>
<include>org.slf4j:log4j-over-slf4j:[${slf4j.version}]:jar:provided</include>
<include>org.slf4j:slf4j-api:[${slf4j.version}]:jar:provided</include>
diff --git a/config-model/src/main/java/com/yahoo/config/model/provision/InMemoryProvisioner.java b/config-model/src/main/java/com/yahoo/config/model/provision/InMemoryProvisioner.java
index 8bf6dc7f1d9..a6bcf6b0fd2 100644
--- a/config-model/src/main/java/com/yahoo/config/model/provision/InMemoryProvisioner.java
+++ b/config-model/src/main/java/com/yahoo/config/model/provision/InMemoryProvisioner.java
@@ -36,7 +36,7 @@ import java.util.stream.IntStream;
*/
public class InMemoryProvisioner implements HostProvisioner {
- public static final NodeResources defaultResources = new NodeResources(1, 3, 10, 1);
+ public static final NodeResources defaultResources = new NodeResources(1, 3, 50, 1);
/**
* If this is true an exception is thrown when all nodes are used.
@@ -153,7 +153,7 @@ public class InMemoryProvisioner implements HostProvisioner {
if (alwaysReturnOneNode)
nodes = 1;
- int groups = requested.groups() > nodes ? nodes : requested.groups();
+ int groups = Math.min(requested.groups(), nodes);
List<HostSpec> allocation = new ArrayList<>();
if (groups == 1) {
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedBlock.java b/config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedBlock.java
index 213733f7722..151da352f2f 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedBlock.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedBlock.java
@@ -15,6 +15,7 @@ public class ParsedBlock {
}
public final String name() { return name; }
+ public final String blockType() { return blockType; }
protected void verifyThat(boolean check, String msg, Object ... msgDetails) {
if (check) return;
@@ -28,5 +29,8 @@ public class ParsedBlock {
throw new IllegalArgumentException(buf.toString());
}
+ public String toString() {
+ return blockType + " '" + name + "'";
+ }
}
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedDocument.java b/config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedDocument.java
index ca128a93590..ea138808289 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedDocument.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedDocument.java
@@ -62,8 +62,9 @@ public class ParsedDocument extends ParsedBlock {
void inherit(String other) { inherited.add(other); }
void addField(ParsedField field) {
- String fieldName = field.name();
- verifyThat(! docFields.containsKey(fieldName), "already has field", fieldName);
+ String fieldName = field.name().toLowerCase();
+ verifyThat(! docFields.containsKey(fieldName),
+ "Duplicate (case insensitively) " + field + " in document type '" + this.name() + "'");
docFields.put(fieldName, field);
}
@@ -81,8 +82,6 @@ public class ParsedDocument extends ParsedBlock {
annotation.tagOwner(this);
}
- public String toString() { return "document " + name(); }
-
void resolveInherit(String name, ParsedDocument parsed) {
verifyThat(inherited.contains(name), "resolveInherit for non-inherited name", name);
verifyThat(name.equals(parsed.name()), "resolveInherit name mismatch for", name);
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedType.java b/config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedType.java
index d04277706a1..a5f00b1ce45 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedType.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/parser/ParsedType.java
@@ -32,6 +32,61 @@ class ParsedType {
private boolean createIfNonExistent = false;
private boolean removeIfZero = false;
+ public String toString() {
+ var buf = new StringBuilder();
+ buf.append("[type ").append(variant).append("] {");
+ switch (variant) {
+ case NONE:
+ break;
+ case BUILTIN:
+ buf.append(name);
+ break;
+ case POSITION:
+ buf.append(name);
+ break;
+ case TENSOR:
+ buf.append(tensorType.toString());
+ break;
+ case ARRAY: buf
+ .append(" array<")
+ .append(valType.toString())
+ .append("> ");
+ break;
+ case WSET: buf
+ .append(" weightedset<")
+ .append(valType.toString())
+ .append(">");
+ if (createIfNonExistent) buf.append(",createIfNonExistent");
+ if (removeIfZero) buf.append(",removeIfZero");
+ buf.append(" ");
+ break;
+ case MAP: buf
+ .append(" map<")
+ .append(keyType.toString())
+ .append(",")
+ .append(valType.toString())
+ .append("> ");
+ break;
+ case DOC_REFERENCE: buf
+ .append(" reference<")
+ .append(valType.toString())
+ .append("> ");
+ break;
+ case ANN_REFERENCE: buf
+ .append(" ")
+ .append(toString())
+ .append(" ");
+ break;
+ case STRUCT:
+ case DOCUMENT:
+ case UNKNOWN:
+ buf.append(" ").append(name).append(" ");
+ break;
+ }
+ buf.append("}");
+ return buf.toString();
+ }
+
private static Variant guessVariant(String name) {
switch (name) {
case "bool": return Variant.BUILTIN;
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 582ab18f904..183ab56d45f 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
@@ -553,7 +553,7 @@ public class ModelProvisioningTest {
assertEquals(3, subGroups.get(0).getNodes().size());
assertEquals(0, subGroups.get(0).getNodes().get(0).getDistributionKey());
assertEquals("bar/storage/0", subGroups.get(0).getNodes().get(0).getConfigId());
- assertEquals("node-1-3-10-57", subGroups.get(0).getNodes().get(0).getHostName());
+ assertEquals("node-1-3-50-57", subGroups.get(0).getNodes().get(0).getHostName());
assertEquals(1, subGroups.get(0).getNodes().get(1).getDistributionKey());
assertEquals("bar/storage/1", subGroups.get(0).getNodes().get(1).getConfigId());
assertEquals(2, subGroups.get(0).getNodes().get(2).getDistributionKey());
@@ -562,13 +562,13 @@ public class ModelProvisioningTest {
assertEquals(3, subGroups.get(1).getNodes().size());
assertEquals(3, subGroups.get(1).getNodes().get(0).getDistributionKey());
assertEquals("bar/storage/3", subGroups.get(1).getNodes().get(0).getConfigId());
- assertEquals("node-1-3-10-54", subGroups.get(1).getNodes().get(0).getHostName());
+ assertEquals("node-1-3-50-54", subGroups.get(1).getNodes().get(0).getHostName());
assertEquals(4, subGroups.get(1).getNodes().get(1).getDistributionKey());
assertEquals("bar/storage/4", subGroups.get(1).getNodes().get(1).getConfigId());
assertEquals(5, subGroups.get(1).getNodes().get(2).getDistributionKey());
assertEquals("bar/storage/5", subGroups.get(1).getNodes().get(2).getConfigId());
// ...
- assertEquals("node-1-3-10-51", subGroups.get(2).getNodes().get(0).getHostName());
+ assertEquals("node-1-3-50-51", subGroups.get(2).getNodes().get(0).getHostName());
// ...
assertEquals("8", subGroups.get(8).getIndex());
assertEquals(3, subGroups.get(8).getNodes().size());
@@ -587,14 +587,14 @@ public class ModelProvisioningTest {
assertEquals(1, subGroups.get(0).getNodes().size());
assertEquals(0, subGroups.get(0).getNodes().get(0).getDistributionKey());
assertEquals("baz/storage/0", subGroups.get(0).getNodes().get(0).getConfigId());
- assertEquals("node-1-3-10-27", subGroups.get(0).getNodes().get(0).getHostName());
+ assertEquals("node-1-3-50-27", subGroups.get(0).getNodes().get(0).getHostName());
assertEquals("1", subGroups.get(1).getIndex());
assertEquals(1, subGroups.get(1).getNodes().size());
assertEquals(1, subGroups.get(1).getNodes().get(0).getDistributionKey());
assertEquals("baz/storage/1", subGroups.get(1).getNodes().get(0).getConfigId());
- assertEquals("node-1-3-10-26", subGroups.get(1).getNodes().get(0).getHostName());
+ assertEquals("node-1-3-50-26", subGroups.get(1).getNodes().get(0).getHostName());
// ...
- assertEquals("node-1-3-10-25", subGroups.get(2).getNodes().get(0).getHostName());
+ assertEquals("node-1-3-50-25", subGroups.get(2).getNodes().get(0).getHostName());
// ...
assertEquals("26", subGroups.get(26).getIndex());
assertEquals(1, subGroups.get(26).getNodes().size());
@@ -694,7 +694,7 @@ public class ModelProvisioningTest {
assertEquals(3, subGroups.get(0).getNodes().size());
assertEquals(0, subGroups.get(0).getNodes().get(0).getDistributionKey());
assertEquals("bar/storage/0", subGroups.get(0).getNodes().get(0).getConfigId());
- assertEquals("node-1-3-10-57", subGroups.get(0).getNodes().get(0).getHostName());
+ assertEquals("node-1-3-50-57", subGroups.get(0).getNodes().get(0).getHostName());
assertEquals(1, subGroups.get(0).getNodes().get(1).getDistributionKey());
assertEquals("bar/storage/1", subGroups.get(0).getNodes().get(1).getConfigId());
assertEquals(2, subGroups.get(0).getNodes().get(2).getDistributionKey());
@@ -703,13 +703,13 @@ public class ModelProvisioningTest {
assertEquals(3, subGroups.get(1).getNodes().size());
assertEquals(3, subGroups.get(1).getNodes().get(0).getDistributionKey());
assertEquals("bar/storage/3", subGroups.get(1).getNodes().get(0).getConfigId());
- assertEquals("node-1-3-10-54", subGroups.get(1).getNodes().get(0).getHostName());
+ assertEquals("node-1-3-50-54", subGroups.get(1).getNodes().get(0).getHostName());
assertEquals(4, subGroups.get(1).getNodes().get(1).getDistributionKey());
assertEquals("bar/storage/4", subGroups.get(1).getNodes().get(1).getConfigId());
assertEquals(5, subGroups.get(1).getNodes().get(2).getDistributionKey());
assertEquals("bar/storage/5", subGroups.get(1).getNodes().get(2).getConfigId());
// ...
- assertEquals("node-1-3-10-51", subGroups.get(2).getNodes().get(0).getHostName());
+ assertEquals("node-1-3-50-51", subGroups.get(2).getNodes().get(0).getHostName());
// ...
assertEquals("8", subGroups.get(8).getIndex());
assertEquals(3, subGroups.get(8).getNodes().size());
@@ -728,14 +728,14 @@ public class ModelProvisioningTest {
assertEquals(1, subGroups.get(0).getNodes().size());
assertEquals(0, subGroups.get(0).getNodes().get(0).getDistributionKey());
assertEquals("baz/storage/0", subGroups.get(0).getNodes().get(0).getConfigId());
- assertEquals("node-1-3-10-27", subGroups.get(0).getNodes().get(0).getHostName());
+ assertEquals("node-1-3-50-27", subGroups.get(0).getNodes().get(0).getHostName());
assertEquals("1", subGroups.get(1).getIndex());
assertEquals(1, subGroups.get(1).getNodes().size());
assertEquals(1, subGroups.get(1).getNodes().get(0).getDistributionKey());
assertEquals("baz/storage/1", subGroups.get(1).getNodes().get(0).getConfigId());
- assertEquals("node-1-3-10-26", subGroups.get(1).getNodes().get(0).getHostName());
+ assertEquals("node-1-3-50-26", subGroups.get(1).getNodes().get(0).getHostName());
// ...
- assertEquals("node-1-3-10-25", subGroups.get(2).getNodes().get(0).getHostName());
+ assertEquals("node-1-3-50-25", subGroups.get(2).getNodes().get(0).getHostName());
// ...
assertEquals("26", subGroups.get(26).getIndex());
assertEquals(1, subGroups.get(26).getNodes().size());
@@ -770,9 +770,9 @@ public class ModelProvisioningTest {
ClusterControllerContainerCluster clusterControllers = model.getAdmin().getClusterControllers();
assertEquals(3, clusterControllers.getContainers().size());
assertEquals("cluster-controllers", clusterControllers.getName());
- assertEquals("node-1-3-10-03", clusterControllers.getContainers().get(0).getHostName());
- assertEquals("node-1-3-10-02", clusterControllers.getContainers().get(1).getHostName());
- assertEquals("node-1-3-10-01", clusterControllers.getContainers().get(2).getHostName());
+ assertEquals("node-1-3-50-03", clusterControllers.getContainers().get(0).getHostName());
+ assertEquals("node-1-3-50-02", clusterControllers.getContainers().get(1).getHostName());
+ assertEquals("node-1-3-50-01", clusterControllers.getContainers().get(2).getHostName());
// Check content cluster
ContentCluster cluster = model.getContentClusters().get("bar");
@@ -785,19 +785,19 @@ public class ModelProvisioningTest {
assertEquals(1, subGroups.get(0).getNodes().size());
assertEquals(0, subGroups.get(0).getNodes().get(0).getDistributionKey());
assertEquals("bar/storage/0", subGroups.get(0).getNodes().get(0).getConfigId());
- assertEquals("node-1-3-10-11", subGroups.get(0).getNodes().get(0).getHostName());
+ assertEquals("node-1-3-50-11", subGroups.get(0).getNodes().get(0).getHostName());
// second group
assertEquals("1", subGroups.get(1).getIndex());
assertEquals(1, subGroups.get(1).getNodes().size());
assertEquals(1, subGroups.get(1).getNodes().get(0).getDistributionKey());
assertEquals("bar/storage/1", subGroups.get(1).getNodes().get(0).getConfigId());
- assertEquals("node-1-3-10-10", subGroups.get(1).getNodes().get(0).getHostName());
+ assertEquals("node-1-3-50-10", subGroups.get(1).getNodes().get(0).getHostName());
// ... last group
assertEquals("7", subGroups.get(7).getIndex());
assertEquals(1, subGroups.get(7).getNodes().size());
assertEquals(7, subGroups.get(7).getNodes().get(0).getDistributionKey());
assertEquals("bar/storage/7", subGroups.get(7).getNodes().get(0).getConfigId());
- assertEquals("node-1-3-10-04", subGroups.get(7).getNodes().get(0).getHostName());
+ assertEquals("node-1-3-50-04", subGroups.get(7).getNodes().get(0).getHostName());
}
@Test
@@ -814,15 +814,15 @@ public class ModelProvisioningTest {
int numberOfHosts = 11;
VespaModelTester tester = new VespaModelTester();
tester.addHosts(numberOfHosts);
- VespaModel model = tester.createModel(services, true, "node-1-3-10-09");
+ VespaModel model = tester.createModel(services, true, "node-1-3-50-09");
assertEquals(numberOfHosts, model.getRoot().hostSystem().getHosts().size());
// Check slobroks clusters
assertEquals("Includes retired node", 1+3, model.getAdmin().getSlobroks().size());
- assertEquals("node-1-3-10-11", model.getAdmin().getSlobroks().get(0).getHostName());
- assertEquals("node-1-3-10-10", model.getAdmin().getSlobroks().get(1).getHostName());
- assertEquals("node-1-3-10-08", model.getAdmin().getSlobroks().get(2).getHostName());
- assertEquals("Included in addition because it is retired", "node-1-3-10-09", model.getAdmin().getSlobroks().get(3).getHostName());
+ assertEquals("node-1-3-50-11", model.getAdmin().getSlobroks().get(0).getHostName());
+ assertEquals("node-1-3-50-10", model.getAdmin().getSlobroks().get(1).getHostName());
+ assertEquals("node-1-3-50-08", model.getAdmin().getSlobroks().get(2).getHostName());
+ assertEquals("Included in addition because it is retired", "node-1-3-50-09", model.getAdmin().getSlobroks().get(3).getHostName());
}
@Test
@@ -839,16 +839,16 @@ public class ModelProvisioningTest {
int numberOfHosts = 12;
VespaModelTester tester = new VespaModelTester();
tester.addHosts(numberOfHosts);
- VespaModel model = tester.createModel(services, true, "node-1-3-10-03", "node-1-3-10-04");
+ VespaModel model = tester.createModel(services, true, "node-1-3-50-03", "node-1-3-50-04");
assertEquals(10+2, model.getRoot().hostSystem().getHosts().size());
// Check slobroks clusters
assertEquals("Includes retired node", 3+2, model.getAdmin().getSlobroks().size());
- assertEquals("node-1-3-10-12", model.getAdmin().getSlobroks().get(0).getHostName());
- assertEquals("node-1-3-10-11", model.getAdmin().getSlobroks().get(1).getHostName());
- assertEquals("node-1-3-10-10", model.getAdmin().getSlobroks().get(2).getHostName());
- assertEquals("Included in addition because it is retired", "node-1-3-10-04", model.getAdmin().getSlobroks().get(3).getHostName());
- assertEquals("Included in addition because it is retired", "node-1-3-10-03", model.getAdmin().getSlobroks().get(4).getHostName());
+ assertEquals("node-1-3-50-12", model.getAdmin().getSlobroks().get(0).getHostName());
+ assertEquals("node-1-3-50-11", model.getAdmin().getSlobroks().get(1).getHostName());
+ assertEquals("node-1-3-50-10", model.getAdmin().getSlobroks().get(2).getHostName());
+ assertEquals("Included in addition because it is retired", "node-1-3-50-04", model.getAdmin().getSlobroks().get(3).getHostName());
+ assertEquals("Included in addition because it is retired", "node-1-3-50-03", model.getAdmin().getSlobroks().get(4).getHostName());
}
@Test
@@ -868,19 +868,19 @@ public class ModelProvisioningTest {
int numberOfHosts = 16;
VespaModelTester tester = new VespaModelTester();
tester.addHosts(numberOfHosts);
- VespaModel model = tester.createModel(services, true, "node-1-3-10-15", "node-1-3-10-05", "node-1-3-10-04");
+ VespaModel model = tester.createModel(services, true, "node-1-3-50-15", "node-1-3-50-05", "node-1-3-50-04");
assertEquals(numberOfHosts, model.getRoot().hostSystem().getHosts().size());
// Check slobroks clusters
// ... from cluster default
assertEquals("Includes retired node", 7, model.getAdmin().getSlobroks().size());
- assertEquals("node-1-3-10-16", model.getAdmin().getSlobroks().get(0).getHostName());
- assertEquals("node-1-3-10-14", model.getAdmin().getSlobroks().get(1).getHostName());
- assertEquals("Included in addition because it is retired", "node-1-3-10-15", model.getAdmin().getSlobroks().get(2).getHostName());
+ assertEquals("node-1-3-50-16", model.getAdmin().getSlobroks().get(0).getHostName());
+ assertEquals("node-1-3-50-14", model.getAdmin().getSlobroks().get(1).getHostName());
+ assertEquals("Included in addition because it is retired", "node-1-3-50-15", model.getAdmin().getSlobroks().get(2).getHostName());
// ... from cluster bar
- assertEquals("node-1-3-10-03", model.getAdmin().getSlobroks().get(3).getHostName());
- assertEquals("Included in addition because it is retired", "node-1-3-10-05", model.getAdmin().getSlobroks().get(5).getHostName());
- assertEquals("Included in addition because it is retired", "node-1-3-10-04", model.getAdmin().getSlobroks().get(6).getHostName());
+ assertEquals("node-1-3-50-03", model.getAdmin().getSlobroks().get(3).getHostName());
+ assertEquals("Included in addition because it is retired", "node-1-3-50-05", model.getAdmin().getSlobroks().get(5).getHostName());
+ assertEquals("Included in addition because it is retired", "node-1-3-50-04", model.getAdmin().getSlobroks().get(6).getHostName());
}
@Test
@@ -1107,7 +1107,7 @@ public class ModelProvisioningTest {
int numberOfHosts = 3;
VespaModelTester tester = new VespaModelTester();
tester.addHosts(numberOfHosts);
- VespaModel model = tester.createModel(services, false, "node-1-3-10-03");
+ VespaModel model = tester.createModel(services, false, "node-1-3-50-03");
assertEquals(numberOfHosts, model.getRoot().hostSystem().getHosts().size());
ContentCluster cluster = model.getContentClusters().get("bar");
@@ -1136,7 +1136,7 @@ public class ModelProvisioningTest {
int numberOfHosts = 5;
VespaModelTester tester = new VespaModelTester();
tester.addHosts(numberOfHosts);
- VespaModel model = tester.createModel(services, false, "node-1-3-10-05", "node-1-3-10-04", "node-1-3-10-03");
+ VespaModel model = tester.createModel(services, false, "node-1-3-50-05", "node-1-3-50-04", "node-1-3-50-03");
assertEquals(numberOfHosts, model.getRoot().hostSystem().getHosts().size());
ContentCluster cluster = model.getContentClusters().get("bar");
@@ -1165,7 +1165,7 @@ public class ModelProvisioningTest {
int numberOfHosts = 3;
VespaModelTester tester = new VespaModelTester();
tester.addHosts(numberOfHosts);
- VespaModel model = tester.createModel(services, false, false, true, "node-1-3-10-03");
+ VespaModel model = tester.createModel(services, false, false, true, "node-1-3-50-03");
assertEquals(numberOfHosts, model.getRoot().hostSystem().getHosts().size());
ContentCluster cluster = model.getContentClusters().get("bar");
@@ -1502,9 +1502,8 @@ public class ModelProvisioningTest {
tester.setHosted(true);
tester.setAdminClusterArchitecture(Architecture.arm64);
tester.useDedicatedNodeForLogserver(true);
- tester.addHosts(new NodeResources(13.5, 100, 1000, 0.3), 6);
- tester.addHosts(new NodeResources(85, 200, 1000_000_000, 0.3), 20);
- tester.addHosts(new NodeResources(0.5, 2, 10, 0.3, DiskSpeed.any, StorageType.any, Architecture.arm64), 4);
+ tester.addHosts(new NodeResources(13.5, 100, 1000, 0.3), 4);
+ tester.addHosts(new NodeResources(0.5, 2, 50, 0.3, DiskSpeed.fast, StorageType.any, Architecture.arm64), 4); // 3 ccs, 1 logserver
VespaModel model = tester.createModel(services, true, true);
List<HostResource> hosts = model.getRoot().hostSystem().getHosts();
assertEquals(8, hosts.size());
@@ -2147,7 +2146,7 @@ public class ModelProvisioningTest {
"</services>";
VespaModelTester tester = new VespaModelTester();
tester.addHosts(4);
- VespaModel model = tester.createModel(servicesXml, true, "node-1-3-10-04");
+ VespaModel model = tester.createModel(servicesXml, true, "node-1-3-50-04");
ApplicationContainerCluster cluster = model.getContainerClusters().get("zk");
assertEquals(1, cluster.getContainers().stream().filter(Container::isRetired).count());
assertEquals(3, cluster.getContainers().stream().filter(c -> !c.isRetired()).count());
@@ -2176,7 +2175,7 @@ public class ModelProvisioningTest {
assertTrue("Initial servers are not joining", config.build().server().stream().noneMatch(ZookeeperServerConfig.Server::joining));
}
{
- VespaModel nextModel = tester.createModel(Zone.defaultZone(), servicesXml.apply(3), true, false, false, 0, Optional.of(model), new DeployState.Builder(), "node-1-3-10-04", "node-1-3-10-03");
+ VespaModel nextModel = tester.createModel(Zone.defaultZone(), servicesXml.apply(3), true, false, false, 0, Optional.of(model), new DeployState.Builder(), "node-1-3-50-04", "node-1-3-50-03");
ApplicationContainerCluster cluster = nextModel.getContainerClusters().get("zk");
ZookeeperServerConfig.Builder config = new ZookeeperServerConfig.Builder();
cluster.getContainers().forEach(c -> c.getConfig(config));
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/parser/IntermediateParserTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/parser/IntermediateParserTestCase.java
index 8bd04af8c54..36a72381156 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/parser/IntermediateParserTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/parser/IntermediateParserTestCase.java
@@ -69,7 +69,7 @@ public class IntermediateParserTestCase {
" }",
"}");
var e = assertThrows(IllegalArgumentException.class, () -> parseString(input));
- assertEquals("schema 'foo' error: already has document foo so cannot add document foo2", e.getMessage());
+ assertEquals("schema 'foo' error: already has document 'foo' so cannot add document 'foo2'", e.getMessage());
}
void checkFileParses(String fileName) throws Exception {
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/parser/ParsedDocumentTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/parser/ParsedDocumentTestCase.java
index 79d26fab404..9ae7b3aa4b8 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/parser/ParsedDocumentTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/parser/ParsedDocumentTestCase.java
@@ -21,7 +21,10 @@ public class ParsedDocumentTestCase {
var e = assertThrows(IllegalArgumentException.class, () ->
doc.addField(new ParsedField("zap", stringType)));
System.err.println("As expected: "+e);
- assertEquals("document 'foo' error: already has field zap", e.getMessage());
+ assertEquals("document 'foo' error: Duplicate (case insensitively) field 'zap' in document type 'foo'", e.getMessage());
+ e = assertThrows(IllegalArgumentException.class, () ->
+ doc.addField(new ParsedField("ZAP", stringType)));
+ assertEquals("document 'foo' error: Duplicate (case insensitively) field 'ZAP' in document type 'foo'", e.getMessage());
}
}
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerClusterTest.java b/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerClusterTest.java
index c00a5f65d08..7bf08461df7 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerClusterTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerClusterTest.java
@@ -104,7 +104,7 @@ public class MetricsProxyContainerClusterTest {
private void assertNodeConfig(MetricsNodesConfig.Node node) {
assertTrue(node.role().startsWith("container/foo/0/"));
- assertTrue(node.hostname().startsWith("node-1-3-10-"));
+ assertTrue(node.hostname().startsWith("node-1-3-50-"));
assertEquals(MetricsProxyContainer.BASEPORT, node.metricsPort());
assertEquals(MetricsV1Handler.VALUES_PATH, node.metricsPath());
}
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerTest.java b/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerTest.java
index ad3a163f052..9b1ff54482b 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerTest.java
@@ -136,7 +136,7 @@ public class MetricsProxyContainerTest {
NodeInfoConfig config = hostedModel.getConfig(NodeInfoConfig.class, metricsV2Handler.getConfigId());
assertTrue(config.role().startsWith("content/my-content/0/"));
- assertTrue(config.hostname().startsWith("node-1-3-10-"));
+ assertTrue(config.hostname().startsWith("node-1-3-50-"));
}
@Test
diff --git a/config/src/vespa/config/frt/frtconnectionpool.cpp b/config/src/vespa/config/frt/frtconnectionpool.cpp
index 2ae812cd76e..0c11401e052 100644
--- a/config/src/vespa/config/frt/frtconnectionpool.cpp
+++ b/config/src/vespa/config/frt/frtconnectionpool.cpp
@@ -73,11 +73,13 @@ FRTConnectionPool::getNextRoundRobin()
FRTConnection* nextFRTConnection = nullptr;
if ( ! ready.empty()) {
- int sel = _selectIdx % (int)ready.size();
+ unsigned int sel = _selectIdx % (int)ready.size();
+ LOG_ASSERT(sel < ready.size());
_selectIdx = sel + 1;
nextFRTConnection = ready[sel];
} else if ( ! suspended.empty()) {
- int sel = _selectIdx % (int)suspended.size();
+ unsigned int sel = _selectIdx % (int)suspended.size();
+ LOG_ASSERT(sel < suspended.size());
_selectIdx = sel + 1;
nextFRTConnection = suspended[sel];
}
@@ -113,10 +115,12 @@ FRTConnectionPool::getNextHashBased()
FRTConnection* nextFRTConnection = nullptr;
if ( ! ready.empty()) {
- int sel = std::abs(hashCode(_hostname) % (int)ready.size());
+ unsigned int sel = std::abs(hashCode(_hostname) % (int)ready.size());
+ LOG_ASSERT(sel < ready.size());
nextFRTConnection = ready[sel];
} else if ( ! suspended.empty() ){
- int sel = std::abs(hashCode(_hostname) % (int)suspended.size());
+ unsigned int sel = std::abs(hashCode(_hostname) % (int)suspended.size());
+ LOG_ASSERT(sel < suspended.size());
nextFRTConnection = suspended[sel];
}
return nextFRTConnection;
diff --git a/configutil/src/apps/configstatus/main.cpp b/configutil/src/apps/configstatus/main.cpp
index cd0424633d9..3656013cf2e 100644
--- a/configutil/src/apps/configstatus/main.cpp
+++ b/configutil/src/apps/configstatus/main.cpp
@@ -87,7 +87,7 @@ void Application::usage() {
int Application::Main() {
parseOpts();
-
+ fprintf(stderr, "Getting config from: %s\n", _specString.c_str());
config::ServerSpec spec(_specString);
config::ConfigUri uri = config::ConfigUri::createFromSpec(_cfgId, spec);
ConfigStatus status(_flags, uri);
diff --git a/configutil/src/lib/configstatus.cpp b/configutil/src/lib/configstatus.cpp
index 841d1604866..98a6bca7ba3 100644
--- a/configutil/src/lib/configstatus.cpp
+++ b/configutil/src/lib/configstatus.cpp
@@ -109,7 +109,7 @@ public:
MyHttpHandler::~MyHttpHandler() = default;
-ConfigStatus::ConfigStatus(Flags flags, const config::ConfigUri uri)
+ConfigStatus::ConfigStatus(Flags flags, const config::ConfigUri &uri)
: _cfg(), _flags(flags), _generation(0)
{
if (_flags.verbose) {
diff --git a/configutil/src/lib/configstatus.h b/configutil/src/lib/configstatus.h
index 4d792748419..7d658c9f2c2 100644
--- a/configutil/src/lib/configstatus.h
+++ b/configutil/src/lib/configstatus.h
@@ -22,7 +22,7 @@ public:
{}
};
- ConfigStatus(Flags flags, const config::ConfigUri uri);
+ ConfigStatus(Flags flags, const config::ConfigUri &uri);
~ConfigStatus();
int action();
diff --git a/configutil/src/lib/modelinspect.cpp b/configutil/src/lib/modelinspect.cpp
index d840a7d45ca..68544a55df4 100644
--- a/configutil/src/lib/modelinspect.cpp
+++ b/configutil/src/lib/modelinspect.cpp
@@ -21,7 +21,7 @@ ModelInspect::Flags::Flags(const Flags &) = default;
ModelInspect::Flags & ModelInspect::Flags::operator = (const Flags &) = default;
ModelInspect::Flags::~Flags() { }
-ModelInspect::ModelInspect(Flags flags, const config::ConfigUri uri, std::ostream &out)
+ModelInspect::ModelInspect(Flags flags, const config::ConfigUri &uri, std::ostream &out)
: _cfg(), _flags(flags), _out(out)
{
if (_flags.verbose) {
diff --git a/configutil/src/lib/modelinspect.h b/configutil/src/lib/modelinspect.h
index 33ef94b259b..0c677b9d174 100644
--- a/configutil/src/lib/modelinspect.h
+++ b/configutil/src/lib/modelinspect.h
@@ -20,7 +20,7 @@ public:
~Flags();
};
- ModelInspect(Flags flags, const config::ConfigUri uri, std::ostream &out);
+ ModelInspect(Flags flags, const config::ConfigUri &uri, std::ostream &out);
virtual ~ModelInspect();
int action(int cnt, char *argv[]);
diff --git a/container-dependencies-enforcer/pom.xml b/container-dependencies-enforcer/pom.xml
index 3ce00e5d08a..7465d486013 100644
--- a/container-dependencies-enforcer/pom.xml
+++ b/container-dependencies-enforcer/pom.xml
@@ -106,13 +106,9 @@
<include>org.glassfish.jersey.core:jersey-client:[${jersey2.version}]:jar:provided</include>
<include>org.glassfish.jersey.core:jersey-common:[${jersey2.version}]:jar:provided</include>
<include>org.glassfish.jersey.core:jersey-server:[${jersey2.version}]:jar:provided</include>
- <include>org.glassfish.jersey.ext:jersey-entity-filtering:[${jersey2.version}]:jar:provided</include>
<include>org.glassfish.jersey.ext:jersey-proxy-client:[${jersey2.version}]:jar:provided</include>
- <include>org.glassfish.jersey.media:jersey-media-json-jackson:[${jersey2.version}]:jar:provided</include>
- <include>org.glassfish.jersey.media:jersey-media-multipart:[${jersey2.version}]:jar:provided</include>
<include>org.javassist:javassist:[${javassist.version}]:jar:provided</include>
<include>org.json:json:[${org.json.version}]:jar:provided</include>
- <include>org.jvnet.mimepull:mimepull:[${mimepull.version}]:jar:provided</include>
<include>org.slf4j:jcl-over-slf4j:[${slf4j.version}]:jar:provided</include>
<include>org.slf4j:log4j-over-slf4j:[${slf4j.version}]:jar:provided</include>
<include>org.slf4j:slf4j-api:[${slf4j.version}]:jar:provided</include>
diff --git a/container-dependency-versions/pom.xml b/container-dependency-versions/pom.xml
index 6e06791dc1c..451068763be 100644
--- a/container-dependency-versions/pom.xml
+++ b/container-dependency-versions/pom.xml
@@ -298,9 +298,10 @@
<version>${org.json.version}</version>
</dependency>
<dependency>
+ <!-- TODO Vespa 8: remove! No longer installed in jdisc -->
<groupId>org.jvnet.mimepull</groupId>
<artifactId>mimepull</artifactId>
- <version>${mimepull.version}</version>
+ <version>1.9.6</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
@@ -431,7 +432,6 @@
<javax.validation-api.version>1.1.0.Final</javax.validation-api.version>
<javax.ws.rs-api.version>2.0.1</javax.ws.rs-api.version>
<jersey2.version>2.25</jersey2.version>
- <mimepull.version>1.9.6</mimepull.version>
<!-- Not a dependency. Only included to allow the versions-maven-plugin to check for updates of itself -->
<versions-maven-plugin.version>2.8.1</versions-maven-plugin.version>
diff --git a/container-disc/pom.xml b/container-disc/pom.xml
index 1c3115900de..732f873d9a0 100644
--- a/container-disc/pom.xml
+++ b/container-disc/pom.xml
@@ -252,11 +252,7 @@
javax.ws.rs-api-${javax.ws.rs-api.version}.jar,
jersey-client-${jersey2.version}.jar,
jersey-common-${jersey2.version}.jar,
- jersey-entity-filtering-${jersey2.version}.jar, <!-- needed by jersey-media-json-jackson -->
jersey-guava-${jersey2.version}.jar,
- jersey-media-json-jackson-${jersey2.version}.jar,
- jersey-media-multipart-${jersey2.version}.jar,
- mimepull-${mimepull.version}.jar, <!-- needed by media-multipart -->
jersey-server-${jersey2.version}.jar,
jersey-proxy-client-${jersey2.version}.jar,
osgi-resource-locator-1.0.1.jar,
diff --git a/container-search/abi-spec.json b/container-search/abi-spec.json
index 8ac5aaa127d..73d4b99b382 100644
--- a/container-search/abi-spec.json
+++ b/container-search/abi-spec.json
@@ -720,6 +720,7 @@
"public static final enum com.yahoo.prelude.query.Item$ItemType WORD",
"public static final enum com.yahoo.prelude.query.Item$ItemType INT",
"public static final enum com.yahoo.prelude.query.Item$ItemType PHRASE",
+ "public static final enum com.yahoo.prelude.query.Item$ItemType MULTI_TERM",
"public static final enum com.yahoo.prelude.query.Item$ItemType PREFIX",
"public static final enum com.yahoo.prelude.query.Item$ItemType SUBSTRING",
"public static final enum com.yahoo.prelude.query.Item$ItemType NEAR",
@@ -741,7 +742,6 @@
"public static final enum com.yahoo.prelude.query.Item$ItemType GEO_LOCATION_TERM",
"public static final enum com.yahoo.prelude.query.Item$ItemType TRUE",
"public static final enum com.yahoo.prelude.query.Item$ItemType FALSE",
- "public static final enum com.yahoo.prelude.query.Item$ItemType MULTI_TERM",
"public final int code"
]
},
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/Item.java b/container-search/src/main/java/com/yahoo/prelude/query/Item.java
index 06fe07d3895..5ad0542c139 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/Item.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/Item.java
@@ -38,7 +38,7 @@ public abstract class Item implements Cloneable {
WORD(4),
INT(5),
PHRASE(6),
- // 7 was PAREN, unused in Vespa 7
+ MULTI_TERM(7),
PREFIX(8),
SUBSTRING(9),
NEAR(11),
@@ -59,8 +59,7 @@ public abstract class Item implements Cloneable {
NEAREST_NEIGHBOR(26),
GEO_LOCATION_TERM(27),
TRUE(28),
- FALSE(29),
- MULTI_TERM(30);
+ FALSE(29);
public final int code;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/IssueHandler.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/IssueHandler.java
index 6ee5b5a314f..dc8b22ac32d 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/IssueHandler.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/IssueHandler.java
@@ -100,4 +100,12 @@ public interface IssueHandler {
*/
boolean issueExists(Issue issue);
+ /**
+ * Returns information about project identified by the project key
+ *
+ * @param projectKey The project key to find information for
+ * @return Project info for project
+ * @throws RuntimeException exception if project not found
+ */
+ ProjectInfo projectInfo(String projectKey);
}
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/MockIssueHandler.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/MockIssueHandler.java
index 021f05f4d1f..257d2ff5e67 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/MockIssueHandler.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/MockIssueHandler.java
@@ -24,6 +24,7 @@ public class MockIssueHandler implements IssueHandler {
private final Clock clock;
private final AtomicLong counter = new AtomicLong();
private final Map<IssueId, MockIssue> issues = new HashMap<>();
+ private final Map<String, ProjectInfo> projects = new HashMap<>();
@Inject
@SuppressWarnings("unused")
@@ -112,6 +113,11 @@ public class MockIssueHandler implements IssueHandler {
return issues.values().stream().anyMatch(i -> i.issue.summary().equals(issue.summary()));
}
+ @Override
+ public ProjectInfo projectInfo(String projectKey) {
+ return projects.get(projectKey);
+ }
+
public MockIssueHandler close(IssueId issueId) {
issues.get(issueId).open = false;
touch(issueId);
@@ -137,6 +143,10 @@ public class MockIssueHandler implements IssueHandler {
issues.get(issueId).updated = clock.instant();
}
+ public void addProject(String projectKey, ProjectInfo projectInfo) {
+ projects.put(projectKey, projectInfo);
+ }
+
private static class PropertyInfo {
private List<List<User>> contacts = Collections.emptyList();
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/ProjectInfo.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/ProjectInfo.java
new file mode 100644
index 00000000000..8bf2ebfd092
--- /dev/null
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/ProjectInfo.java
@@ -0,0 +1,31 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.hosted.controller.api.integration.organization;
+
+import java.util.Map;
+
+/**
+ * @author jvenstad
+ * @author mortent
+ */
+public class ProjectInfo {
+
+ private final String id;
+ private final Map<String, String> componentIds;
+
+ public ProjectInfo(String id, Map<String, String> componentIds) {
+ this.id = id;
+ this.componentIds = componentIds;
+ }
+
+ public boolean hasComponent(String component) {
+ return componentIds.containsKey(component);
+ }
+
+ public String id() {
+ return id;
+ }
+
+ public Map<String, String> componentIds() {
+ return componentIds;
+ }
+} \ No newline at end of file
diff --git a/dist/vespa.spec b/dist/vespa.spec
index e4eb2ab7643..e13f06ed0f5 100644
--- a/dist/vespa.spec
+++ b/dist/vespa.spec
@@ -899,7 +899,6 @@ fi
%{_prefix}/lib/jars/alpn-*.jar
%{_prefix}/lib/jars/http2-*.jar
%{_prefix}/lib/jars/jetty-*.jar
-%{_prefix}/lib/jars/mimepull-*.jar
%{_prefix}/lib/jars/model-evaluation-jar-with-dependencies.jar
%{_prefix}/lib/jars/model-integration-jar-with-dependencies.jar
%{_prefix}/lib/jars/org.apache.aries.spifly.dynamic.bundle-*.jar
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/PermanentFlags.java b/flags/src/main/java/com/yahoo/vespa/flags/PermanentFlags.java
index e3960d995e9..bc199f7160e 100644
--- a/flags/src/main/java/com/yahoo/vespa/flags/PermanentFlags.java
+++ b/flags/src/main/java/com/yahoo/vespa/flags/PermanentFlags.java
@@ -260,7 +260,7 @@ public class PermanentFlags {
"Architecture to use for node resources. Used when implicitly creating admin clusters " +
"(logserver, clustercontroller). Valid values: x86_64, arm64",
"Takes effect on next redeployment",
- ZONE_ID, APPLICATION_ID, CLUSTER_ID, CLUSTER_TYPE);
+ ZONE_ID, APPLICATION_ID);
private PermanentFlags() {}
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/AllocationOptimizer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/AllocationOptimizer.java
index 30432c1c078..43a78e3a315 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/AllocationOptimizer.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/AllocationOptimizer.java
@@ -47,7 +47,7 @@ public class AllocationOptimizer {
limits = Limits.of(new ClusterResources(minimumNodes, 1, NodeResources.unspecified()),
new ClusterResources(maximumNodes, maximumNodes, NodeResources.unspecified()));
else
- limits = atLeast(minimumNodes, limits).fullySpecified(current.clusterSpec().type(), nodeRepository);
+ limits = atLeast(minimumNodes, limits).fullySpecified(current.clusterSpec().type(), nodeRepository, clusterModel.application().id());
Optional<AllocatableClusterResources> bestAllocation = Optional.empty();
NodeList hosts = nodeRepository.nodes().list().hosts();
for (int groups = limits.min().groups(); groups <= limits.max().groups(); groups++) {
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/Limits.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/Limits.java
index 3c9cbfe2620..ef45592ad18 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/Limits.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/Limits.java
@@ -1,6 +1,7 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.autoscale;
+import com.yahoo.config.provision.ApplicationId;
import com.yahoo.config.provision.Capacity;
import com.yahoo.config.provision.ClusterResources;
import com.yahoo.config.provision.ClusterSpec;
@@ -59,10 +60,10 @@ public class Limits {
return resources;
}
- public Limits fullySpecified(ClusterSpec.Type type, NodeRepository nodeRepository) {
+ public Limits fullySpecified(ClusterSpec.Type type, NodeRepository nodeRepository, ApplicationId applicationId) {
if (this.isEmpty()) throw new IllegalStateException("Unspecified limits can not be made fully specified");
- var defaultResources = new CapacityPolicies(nodeRepository).defaultNodeResources(type);
+ var defaultResources = new CapacityPolicies(nodeRepository).defaultNodeResources(type, applicationId);
var specifiedMin = min.nodeResources().isUnspecified() ? min.with(defaultResources) : min;
var specifiedMax = max.nodeResources().isUnspecified() ? max.with(defaultResources) : max;
return new Limits(specifiedMin, specifiedMax);
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/PassthroughLoadBalancerService.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/PassthroughLoadBalancerService.java
deleted file mode 100644
index 23ddce3ba9e..00000000000
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/PassthroughLoadBalancerService.java
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.vespa.hosted.provision.lb;
-
-import com.yahoo.config.provision.ApplicationId;
-import com.yahoo.config.provision.ClusterSpec;
-import com.yahoo.config.provision.NodeType;
-
-import java.util.Comparator;
-import java.util.Optional;
-import java.util.Set;
-
-/**
- * Implementation of a load balancer service that returns a real as the load balancer instance. This is intended for
- * development purposes.
- *
- * @author mpolden
- */
-public class PassthroughLoadBalancerService implements LoadBalancerService {
-
- @Override
- public LoadBalancerInstance create(LoadBalancerSpec spec, boolean force) {
- var real = spec.reals().stream()
- .min(Comparator.naturalOrder())
- .orElseThrow(() -> new IllegalArgumentException("No reals given"));
- return new LoadBalancerInstance(real.hostname(), Optional.empty(), Set.of(real.port()),
- Set.of(real.ipAddress() + "/32"), Set.of());
- }
-
- @Override
- public void remove(ApplicationId application, ClusterSpec.Id cluster) {
- // Nothing to remove
- }
-
- @Override
- public Protocol protocol() {
- return Protocol.ipv4;
- }
-
- @Override
- public boolean supports(NodeType nodeType, ClusterSpec.Type clusterType) {
- return true;
- }
-
-}
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/SharedLoadBalancerService.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/SharedLoadBalancerService.java
index 7dbebd1fc47..1345dfb8e65 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/SharedLoadBalancerService.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/SharedLoadBalancerService.java
@@ -5,16 +5,10 @@ import com.yahoo.config.provision.ApplicationId;
import com.yahoo.config.provision.ClusterSpec;
import com.yahoo.config.provision.HostName;
import com.yahoo.config.provision.NodeType;
-import com.yahoo.vespa.hosted.provision.Node;
-import com.yahoo.vespa.hosted.provision.NodeList;
-import com.yahoo.vespa.hosted.provision.NodeRepository;
-import com.yahoo.vespa.hosted.provision.node.IP;
-import java.util.Comparator;
import java.util.Objects;
import java.util.Optional;
import java.util.Set;
-import java.util.stream.Collectors;
/**
* This implementation of {@link LoadBalancerService} returns the load balancer(s) that exists by default in the shared
@@ -27,28 +21,18 @@ import java.util.stream.Collectors;
*/
public class SharedLoadBalancerService implements LoadBalancerService {
- private static final Comparator<Node> hostnameComparator = Comparator.comparing(Node::hostname);
-
- private final NodeRepository nodeRepository;
private final String vipHostname;
- public SharedLoadBalancerService(NodeRepository nodeRepository, String vipHostname) {
- this.nodeRepository = Objects.requireNonNull(nodeRepository);
+ public SharedLoadBalancerService(String vipHostname) {
this.vipHostname = Objects.requireNonNull(vipHostname);
}
@Override
public LoadBalancerInstance create(LoadBalancerSpec spec, boolean force) {
- NodeList proxyNodes = nodeRepository.nodes().list().nodeType(NodeType.proxy).sortedBy(hostnameComparator);
- if (proxyNodes.isEmpty()) throw new IllegalStateException("No proxy nodes found in node-repository");
- Set<String> networks = proxyNodes.stream()
- .flatMap(node -> node.ipConfig().primary().stream())
- .map(SharedLoadBalancerService::withPrefixLength)
- .collect(Collectors.toSet());
return new LoadBalancerInstance(HostName.from(vipHostname),
Optional.empty(),
- Set.of(4080, 4443),
- networks,
+ Set.of(4443),
+ Set.of(),
spec.reals());
}
@@ -68,11 +52,4 @@ public class SharedLoadBalancerService implements LoadBalancerService {
return nodeType == NodeType.tenant && clusterType.isContainer();
}
- private static String withPrefixLength(String address) {
- if (IP.isV6(address)) {
- return address + "/128";
- }
- return address + "/32";
- }
-
}
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRepositoryMaintenance.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRepositoryMaintenance.java
index 15decde0d7c..2d36108a1a6 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRepositoryMaintenance.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRepositoryMaintenance.java
@@ -66,7 +66,7 @@ public class NodeRepositoryMaintenance extends AbstractComponent {
maintainers.add(new ScalingSuggestionsMaintainer(nodeRepository, defaults.scalingSuggestionsInterval, metric));
maintainers.add(new SwitchRebalancer(nodeRepository, defaults.switchRebalancerInterval, metric, deployer));
- provisionServiceProvider.getLoadBalancerService(nodeRepository)
+ provisionServiceProvider.getLoadBalancerService()
.map(lbService -> new LoadBalancerExpirer(nodeRepository, defaults.loadBalancerExpirerInterval, lbService, metric))
.ifPresent(maintainers::add);
provisionServiceProvider.getHostProvisioner()
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/CapacityPolicies.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/CapacityPolicies.java
index 45e9efc1a1d..f7d5b966c12 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/CapacityPolicies.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/CapacityPolicies.java
@@ -8,12 +8,15 @@ import com.yahoo.config.provision.ClusterSpec;
import com.yahoo.config.provision.Environment;
import com.yahoo.config.provision.NodeResources;
import com.yahoo.config.provision.Zone;
+import com.yahoo.vespa.flags.FlagSource;
import com.yahoo.vespa.flags.PermanentFlags;
import com.yahoo.vespa.hosted.provision.NodeRepository;
import java.util.function.Function;
import static com.yahoo.config.provision.NodeResources.Architecture;
+import static com.yahoo.vespa.flags.FetchVector.Dimension.APPLICATION_ID;
+import static com.yahoo.vespa.flags.PermanentFlags.ADMIN_CLUSTER_NODE_ARCHITECTURE;
/**
* Defines the policies for assigning cluster capacity in various environments
@@ -25,12 +28,12 @@ public class CapacityPolicies {
private final Zone zone;
private final Function<ClusterSpec.Type, Boolean> sharedHosts;
- private final Architecture architectureForAdminCluster;
+ private final FlagSource flagSource;
public CapacityPolicies(NodeRepository nodeRepository) {
this.zone = nodeRepository.zone();
this.sharedHosts = type -> PermanentFlags.SHARED_HOST.bindTo(nodeRepository.flagSource()).value().isEnabled(type.name());
- this.architectureForAdminCluster = Architecture.valueOf(PermanentFlags.ADMIN_CLUSTER_NODE_ARCHITECTURE.bindTo(nodeRepository.flagSource()).value());
+ this.flagSource = nodeRepository.flagSource();
}
public Capacity applyOn(Capacity capacity, ApplicationId application) {
@@ -73,11 +76,16 @@ public class CapacityPolicies {
return target;
}
- public NodeResources defaultNodeResources(ClusterSpec.Type clusterType) {
+ public NodeResources defaultNodeResources(ClusterSpec.Type clusterType, ApplicationId applicationId) {
if (clusterType == ClusterSpec.Type.admin) {
+ Architecture architecture = Architecture.valueOf(
+ ADMIN_CLUSTER_NODE_ARCHITECTURE.bindTo(flagSource)
+ .with(APPLICATION_ID, applicationId.serializedForm())
+ .value());
+
return zone.getCloud().dynamicProvisioning() && ! sharedHosts.apply(clusterType) ?
- new NodeResources(0.5, 4, 50, 0.3).with(architectureForAdminCluster) :
- new NodeResources(0.5, 2, 50, 0.3).with(architectureForAdminCluster);
+ new NodeResources(0.5, 4, 50, 0.3).with(architecture) :
+ new NodeResources(0.5, 2, 50, 0.3).with(architecture);
}
return zone.getCloud().dynamicProvisioning() ?
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/EmptyProvisionServiceProvider.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/EmptyProvisionServiceProvider.java
index 9a7fa672cfc..e7332f6474d 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/EmptyProvisionServiceProvider.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/EmptyProvisionServiceProvider.java
@@ -18,7 +18,7 @@ public class EmptyProvisionServiceProvider implements ProvisionServiceProvider {
private final HostResourcesCalculator hostResourcesCalculator = new IdentityHostResourcesCalculator();
@Override
- public Optional<LoadBalancerService> getLoadBalancerService(NodeRepository nodeRepository) {
+ public Optional<LoadBalancerService> getLoadBalancerService() {
return Optional.empty();
}
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeRepositoryProvisioner.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeRepositoryProvisioner.java
index 97fe14caef6..e24d71f22f2 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeRepositoryProvisioner.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeRepositoryProvisioner.java
@@ -70,7 +70,7 @@ public class NodeRepositoryProvisioner implements Provisioner {
this.allocationOptimizer = new AllocationOptimizer(nodeRepository);
this.capacityPolicies = new CapacityPolicies(nodeRepository);
this.zone = zone;
- this.loadBalancerProvisioner = provisionServiceProvider.getLoadBalancerService(nodeRepository)
+ this.loadBalancerProvisioner = provisionServiceProvider.getLoadBalancerService()
.map(lbService -> new LoadBalancerProvisioner(nodeRepository, lbService));
this.nodeResourceLimits = new NodeResourceLimits(nodeRepository);
this.preparer = new Preparer(nodeRepository,
@@ -106,14 +106,12 @@ public class NodeRepositoryProvisioner implements Provisioner {
logIfDownscaled(requested.minResources().nodes(), actual.minResources().nodes(), cluster, logger);
groups = target.groups();
- resources = target.nodeResources().isUnspecified() ? capacityPolicies.defaultNodeResources(cluster.type())
- : target.nodeResources();
+ resources = getNodeResources(cluster, target.nodeResources(), application);
nodeSpec = NodeSpec.from(target.nodes(), resources, exclusive, actual.canFail());
}
else {
groups = 1; // type request with multiple groups is not supported
- resources = requested.minResources().nodeResources().isUnspecified() ? capacityPolicies.defaultNodeResources(cluster.type())
- : requested.minResources().nodeResources();
+ resources = getNodeResources(cluster, requested.minResources().nodeResources(), application);
nodeSpec = NodeSpec.from(requested.type());
}
var reuseIndexes = Flags.REUSE_NODE_INDEXES.bindTo(nodeRepository.flagSource())
@@ -122,6 +120,12 @@ public class NodeRepositoryProvisioner implements Provisioner {
return asSortedHosts(preparer.prepare(application, cluster, nodeSpec, groups, reuseIndexes), resources);
}
+ private NodeResources getNodeResources(ClusterSpec cluster, NodeResources nodeResources, ApplicationId applicationId) {
+ return nodeResources.isUnspecified()
+ ? capacityPolicies.defaultNodeResources(cluster.type(), applicationId)
+ : nodeResources;
+ }
+
@Override
public void activate(Collection<HostSpec> hosts, ActivationContext context, ApplicationTransaction transaction) {
validate(hosts);
@@ -170,16 +174,16 @@ public class NodeRepositoryProvisioner implements Provisioner {
boolean firstDeployment = nodes.isEmpty();
AllocatableClusterResources currentResources =
firstDeployment // start at min, preserve current resources otherwise
- ? new AllocatableClusterResources(initialResourcesFrom(requested, clusterSpec), clusterSpec, nodeRepository)
+ ? new AllocatableClusterResources(initialResourcesFrom(requested, clusterSpec, application.id()), clusterSpec, nodeRepository)
: new AllocatableClusterResources(nodes.asList(), nodeRepository);
var clusterModel = new ClusterModel(application, cluster, clusterSpec, nodes, nodeRepository.metricsDb(), nodeRepository.clock());
return within(Limits.of(requested), currentResources, firstDeployment, clusterModel);
}
- private ClusterResources initialResourcesFrom(Capacity requested, ClusterSpec clusterSpec) {
+ private ClusterResources initialResourcesFrom(Capacity requested, ClusterSpec clusterSpec, ApplicationId applicationId) {
var initial = requested.minResources();
if (initial.nodeResources().isUnspecified())
- initial = initial.with(capacityPolicies.defaultNodeResources(clusterSpec.type()));
+ initial = initial.with(capacityPolicies.defaultNodeResources(clusterSpec.type(), applicationId));
return initial;
}
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisionServiceProvider.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisionServiceProvider.java
index c5835ec525a..6e301b7724c 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisionServiceProvider.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisionServiceProvider.java
@@ -1,7 +1,6 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.provisioning;
-import com.yahoo.vespa.hosted.provision.NodeRepository;
import com.yahoo.vespa.hosted.provision.lb.LoadBalancerService;
import java.util.Optional;
@@ -13,7 +12,7 @@ import java.util.Optional;
*/
public interface ProvisionServiceProvider {
- Optional<LoadBalancerService> getLoadBalancerService(NodeRepository nodeRepository);
+ Optional<LoadBalancerService> getLoadBalancerService();
Optional<HostProvisioner> getHostProvisioner();
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockProvisionServiceProvider.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockProvisionServiceProvider.java
index 9f6143e5daa..d72c5959082 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockProvisionServiceProvider.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockProvisionServiceProvider.java
@@ -2,7 +2,6 @@
package com.yahoo.vespa.hosted.provision.testutils;
import com.google.inject.Inject;
-import com.yahoo.vespa.hosted.provision.NodeRepository;
import com.yahoo.vespa.hosted.provision.lb.LoadBalancerService;
import com.yahoo.vespa.hosted.provision.lb.LoadBalancerServiceMock;
import com.yahoo.vespa.hosted.provision.provisioning.EmptyProvisionServiceProvider;
@@ -38,7 +37,7 @@ public class MockProvisionServiceProvider implements ProvisionServiceProvider {
}
@Override
- public Optional<LoadBalancerService> getLoadBalancerService(NodeRepository nodeRepository) {
+ public Optional<LoadBalancerService> getLoadBalancerService() {
return loadBalancerService;
}
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/AutoscalingTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/AutoscalingTest.java
index a04a3828f13..40e38d752ff 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/AutoscalingTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/AutoscalingTest.java
@@ -15,7 +15,6 @@ import com.yahoo.config.provision.NodeType;
import com.yahoo.config.provision.RegionName;
import com.yahoo.config.provision.SystemName;
import com.yahoo.config.provision.Zone;
-import com.yahoo.vespa.hosted.provision.Node;
import com.yahoo.vespa.hosted.provision.NodeRepository;
import com.yahoo.vespa.hosted.provision.Nodelike;
import com.yahoo.vespa.hosted.provision.provisioning.CapacityPolicies;
@@ -240,7 +239,7 @@ public class AutoscalingTest {
ClusterSpec cluster1 = tester.clusterSpec(ClusterSpec.Type.container, "cluster1");
NodeResources defaultResources =
- new CapacityPolicies(tester.nodeRepository()).defaultNodeResources(cluster1.type());
+ new CapacityPolicies(tester.nodeRepository()).defaultNodeResources(cluster1.type(), application1);
// deploy
tester.deploy(application1, cluster1, Capacity.from(min, max));
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/lb/PassthroughLoadBalancerServiceTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/lb/PassthroughLoadBalancerServiceTest.java
deleted file mode 100644
index 5fcc2afb85d..00000000000
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/lb/PassthroughLoadBalancerServiceTest.java
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.vespa.hosted.provision.lb;
-
-import com.yahoo.config.provision.ApplicationId;
-import com.yahoo.config.provision.ClusterSpec;
-import com.yahoo.config.provision.HostName;
-import org.junit.Test;
-
-import java.util.Set;
-
-import static org.junit.Assert.assertEquals;
-
-/**
- * @author mpolden
- */
-public class PassthroughLoadBalancerServiceTest {
-
- @Test
- public void create() {
- var lbService = new PassthroughLoadBalancerService();
- var real = new Real(HostName.from("host1.example.com"), "192.0.2.10");
- var reals = Set.of(real, new Real(HostName.from("host2.example.com"), "192.0.2.11"));
- var instance = lbService.create(new LoadBalancerSpec(ApplicationId.from("tenant1", "app1", "default"),
- ClusterSpec.Id.from("c1"), reals), false);
- assertEquals(real.hostname(), instance.hostname());
- assertEquals(Set.of(real.port()), instance.ports());
- assertEquals(Set.of(real.ipAddress() + "/32"), instance.networks());
- }
-
-}
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/lb/SharedLoadBalancerServiceTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/lb/SharedLoadBalancerServiceTest.java
index 28b40bb7642..4975e670e86 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/lb/SharedLoadBalancerServiceTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/lb/SharedLoadBalancerServiceTest.java
@@ -4,8 +4,6 @@ package com.yahoo.vespa.hosted.provision.lb;
import com.yahoo.config.provision.ApplicationId;
import com.yahoo.config.provision.ClusterSpec;
import com.yahoo.config.provision.HostName;
-import com.yahoo.config.provision.NodeType;
-import com.yahoo.vespa.hosted.provision.provisioning.ProvisioningTester;
import org.junit.Test;
import java.util.Optional;
@@ -18,8 +16,7 @@ import static org.junit.Assert.assertEquals;
*/
public class SharedLoadBalancerServiceTest {
- private final ProvisioningTester tester = new ProvisioningTester.Builder().build();
- private final SharedLoadBalancerService loadBalancerService = new SharedLoadBalancerService(tester.nodeRepository(), "vip.example.com");
+ private final SharedLoadBalancerService loadBalancerService = new SharedLoadBalancerService("vip.example.com");
private final ApplicationId applicationId = ApplicationId.from("tenant1", "application1", "default");
private final ClusterSpec.Id clusterId = ClusterSpec.Id.from("qrs1");
private final Set<Real> reals = Set.of(
@@ -29,18 +26,12 @@ public class SharedLoadBalancerServiceTest {
@Test
public void test_create_lb() {
- tester.makeReadyNodes(2, "default", NodeType.proxy);
var lb = loadBalancerService.create(new LoadBalancerSpec(applicationId, clusterId, reals), false);
assertEquals(HostName.from("vip.example.com"), lb.hostname());
assertEquals(Optional.empty(), lb.dnsZone());
- assertEquals(Set.of("127.0.0.1/32", "127.0.0.2/32", "::1/128", "::2/128"), lb.networks());
- assertEquals(Set.of(4080, 4443), lb.ports());
- }
-
- @Test(expected = IllegalStateException.class)
- public void test_exception_on_missing_proxies() {
- loadBalancerService.create(new LoadBalancerSpec(applicationId, clusterId, reals), false);
+ assertEquals(Set.of(), lb.networks());
+ assertEquals(Set.of(4443), lb.ports());
}
@Test
diff --git a/searchlib/src/vespa/searchlib/parsequery/parse.h b/searchlib/src/vespa/searchlib/parsequery/parse.h
index c9b7940b887..34ea692c370 100644
--- a/searchlib/src/vespa/searchlib/parsequery/parse.h
+++ b/searchlib/src/vespa/searchlib/parsequery/parse.h
@@ -33,7 +33,7 @@ public:
ITEM_TERM = 4,
ITEM_NUMTERM = 5,
ITEM_PHRASE = 6,
- /* removed: ITEM_PAREN = 7, */
+ ITEM_MULTI_TERM = 7,
ITEM_PREFIXTERM = 8,
ITEM_SUBSTRINGTERM = 9,
ITEM_ANY = 10,
@@ -56,7 +56,7 @@ public:
ITEM_GEO_LOCATION_TERM = 27,
ITEM_TRUE = 28,
ITEM_FALSE = 29,
- ITEM_MULTI_TERM = 30,
+ ITEM_MAX = 30, // Indicates how long tables must be.
ITEM_UNDEF = 31,
};
diff --git a/searchsummary/src/tests/extractkeywords/simplequerystackitem.cpp b/searchsummary/src/tests/extractkeywords/simplequerystackitem.cpp
index b31173c74c2..f3706bfc7c1 100644
--- a/searchsummary/src/tests/extractkeywords/simplequerystackitem.cpp
+++ b/searchsummary/src/tests/extractkeywords/simplequerystackitem.cpp
@@ -186,8 +186,9 @@ SimpleQueryStackItem::AppendBuffer(RawBuf *buf) const
buf->appendCompressedPositiveNumber(_arg2); // allow_approximate
buf->appendCompressedPositiveNumber(_arg3); // explore_additional_hits
break;
- case ITEM_PREDICATE_QUERY: // not handled at all here
case ITEM_MULTI_TERM: // TODO: handle
+ case ITEM_PREDICATE_QUERY: // not handled at all here
+ case ITEM_MAX:
case ITEM_UNDEF:
abort();
break;
diff --git a/vespa_jersey2/pom.xml b/vespa_jersey2/pom.xml
index c27555ab3d6..f8904378901 100644
--- a/vespa_jersey2/pom.xml
+++ b/vespa_jersey2/pom.xml
@@ -20,26 +20,6 @@
<artifactId>javax.ws.rs-api</artifactId>
</dependency>
<dependency>
- <groupId>org.glassfish.jersey.media</groupId>
- <artifactId>jersey-media-json-jackson</artifactId>
- <exclusions>
- <exclusion>
- <!-- Conflicts with javax.activation:javax.activation-api:1.2.0, which is "exported" via jdisc_core. -->
- <groupId>jakarta.activation</groupId>
- <artifactId>jakarta.activation-api</artifactId>
- </exclusion>
- <exclusion>
- <!-- Conflicts with javax.xml.bind:jaxb-api:2.3, which is "exported" via jdisc_core.-->
- <groupId>jakarta.xml.bind</groupId>
- <artifactId>jakarta.xml.bind-api</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>org.glassfish.jersey.media</groupId>
- <artifactId>jersey-media-multipart</artifactId>
- </dependency>
- <dependency>
<groupId>org.glassfish.jersey.ext</groupId>
<artifactId>jersey-proxy-client</artifactId>
</dependency>
@@ -57,9 +37,7 @@
</dependency>
<dependency>
- <!-- Previously pulled in by jersey-container-servlet-core. Contains packages imported by
- jersey-entity-filtering, which is used by jersey-media-json-jackson, which is used by hosted Vespa
- framework bundles, July 2021. -->
+ <!-- TODO Vespa 8: Remove, contains packages imported by only one user app (March 2022) -->
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-server</artifactId>
<exclusions>
@@ -76,6 +54,24 @@
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
</dependency>
+
+ <dependency>
+ <!-- TODO: try to remove! Previously pulled in by jersey-media-json-jackson. -->
+ <groupId>com.fasterxml.jackson.jaxrs</groupId>
+ <artifactId>jackson-jaxrs-json-provider</artifactId>
+ <exclusions>
+ <exclusion>
+ <!-- Conflicts with javax.activation:javax.activation-api:1.2.0, which is "exported" via jdisc_core. -->
+ <groupId>jakarta.activation</groupId>
+ <artifactId>jakarta.activation-api</artifactId>
+ </exclusion>
+ <exclusion>
+ <!-- Conflicts with javax.xml.bind:jaxb-api:2.3, which is "exported" via jdisc_core.-->
+ <groupId>jakarta.xml.bind</groupId>
+ <artifactId>jakarta.xml.bind-api</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
</dependencies>
<build>
diff --git a/vespamalloc/src/tests/test1/testatomic.cpp b/vespamalloc/src/tests/test1/testatomic.cpp
index 5ce52330f77..948616065e6 100644
--- a/vespamalloc/src/tests/test1/testatomic.cpp
+++ b/vespamalloc/src/tests/test1/testatomic.cpp
@@ -2,6 +2,7 @@
#include <vespa/vespalib/testkit/testapp.h>
#include <vespamalloc/malloc/allocchunk.h>
#include <vespamalloc/malloc/mmappool.h>
+#include <unistd.h>
TEST("verify lock freeness of atomics"){
{
@@ -23,29 +24,32 @@ TEST("verify lock freeness of atomics"){
TEST("test explicit mmap/munmap") {
vespamalloc::MMapPool mmapPool;
+ size_t page_size = getpagesize();
+ size_t mmap1_size = 3 * page_size;
+ size_t mmap2_size = 7 * page_size;
EXPECT_EQUAL(0u, mmapPool.getNumMappings());
EXPECT_EQUAL(0u, mmapPool.getMmappedBytes());
- void * mmap1 = mmapPool.mmap(0xe000);
+ void * mmap1 = mmapPool.mmap(mmap1_size);
EXPECT_EQUAL(1u, mmapPool.getNumMappings());
- EXPECT_EQUAL(0xe000u, mmapPool.getMmappedBytes());
- EXPECT_EQUAL(0xe000u, mmapPool.get_size(mmap1));
+ EXPECT_EQUAL(mmap1_size, mmapPool.getMmappedBytes());
+ EXPECT_EQUAL(mmap1_size, mmapPool.get_size(mmap1));
mmapPool.unmap(mmap1);
EXPECT_EQUAL(0u, mmapPool.getNumMappings());
EXPECT_EQUAL(0u, mmapPool.getMmappedBytes());
- mmap1 = mmapPool.mmap(0xe000);
+ mmap1 = mmapPool.mmap(mmap1_size);
EXPECT_EQUAL(1u, mmapPool.getNumMappings());
- EXPECT_EQUAL(0xe000u, mmapPool.getMmappedBytes());
- EXPECT_EQUAL(0xe000u, mmapPool.get_size(mmap1));
+ EXPECT_EQUAL(mmap1_size, mmapPool.getMmappedBytes());
+ EXPECT_EQUAL(mmap1_size, mmapPool.get_size(mmap1));
- void * mmap2 = mmapPool.mmap(0x1e000);
+ void * mmap2 = mmapPool.mmap(mmap2_size);
EXPECT_EQUAL(2u, mmapPool.getNumMappings());
- EXPECT_EQUAL(0x2c000u, mmapPool.getMmappedBytes());
- EXPECT_EQUAL(0xe000u, mmapPool.get_size(mmap1));
- EXPECT_EQUAL(0x1e000u, mmapPool.get_size(mmap2));
+ EXPECT_EQUAL(mmap1_size + mmap2_size, mmapPool.getMmappedBytes());
+ EXPECT_EQUAL(mmap1_size, mmapPool.get_size(mmap1));
+ EXPECT_EQUAL(mmap2_size, mmapPool.get_size(mmap2));
mmapPool.unmap(mmap1);
EXPECT_EQUAL(1u, mmapPool.getNumMappings());
- EXPECT_EQUAL(0x1e000u, mmapPool.getMmappedBytes());
+ EXPECT_EQUAL(mmap2_size, mmapPool.getMmappedBytes());
mmapPool.unmap(mmap2);
EXPECT_EQUAL(0u, mmapPool.getNumMappings());
EXPECT_EQUAL(0u, mmapPool.getMmappedBytes());