aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/LocalProvider.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/ContentSearchCluster.java4
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/search/Dispatch.java4
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/search/DispatchGroup.java8
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/search/IndexedElasticSearchCluster.java5
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/search/IndexedSearchCluster.java3
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/search/NodeSpec.java19
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/search/SearchNode.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/content/IndexedHierarchicDistributionTest.java12
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/search/MultilevelDispatchTest.java2
-rw-r--r--configdefinitions/src/vespa/dispatch.def3
11 files changed, 34 insertions, 30 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/LocalProvider.java b/config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/LocalProvider.java
index 1dd4fb478ec..1bbba5d5f37 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/LocalProvider.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/LocalProvider.java
@@ -180,7 +180,7 @@ public class LocalProvider extends Provider implements
public void getConfig(DispatchConfig.Builder builder) {
if (!(searchCluster instanceof IndexedSearchCluster)) {
log.warning("Could not build DispatchConfig: Only supported for IndexedSearchCluster, got "
- + searchCluster.getClass().getCanonicalName());
+ + searchCluster.getClass().getCanonicalName());
return;
}
((IndexedSearchCluster) searchCluster).getConfig(builder);
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 b5cbb23233a..54f31f3c149 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
@@ -6,7 +6,6 @@ import com.yahoo.vespa.config.search.core.ProtonConfig;
import com.yahoo.documentmodel.DocumentTypeRepo;
import com.yahoo.documentmodel.NewDocumentType;
import com.yahoo.config.model.producer.AbstractConfigProducer;
-import com.yahoo.vespa.defaults.Defaults;
import com.yahoo.vespa.model.builder.UserConfigBuilder;
import com.yahoo.vespa.model.builder.xml.dom.DomSearchTuningBuilder;
import com.yahoo.vespa.model.builder.xml.dom.ModelElement;
@@ -221,12 +220,13 @@ public class ContentSearchCluster extends AbstractConfigProducer implements Prot
return snode;
}
+ /** Translates group ids to continuous 0-base "row" id integers */
private NodeSpec getNextSearchNodeSpec(StorageGroup parentGroup) {
NodeSpec spec = groupToSpecMap.get(parentGroup);
if (spec == null) {
spec = new NodeSpec(groupToSpecMap.size(), 0);
} else {
- spec = new NodeSpec(spec.rowId(), spec.partitionId() + 1);
+ spec = new NodeSpec(spec.groupIndex(), spec.partitionId() + 1);
}
groupToSpecMap.put(parentGroup, spec);
return spec;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/search/Dispatch.java b/config-model/src/main/java/com/yahoo/vespa/model/search/Dispatch.java
index ebe43bc07db..687531cbe11 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/search/Dispatch.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/search/Dispatch.java
@@ -45,7 +45,7 @@ public class Dispatch extends AbstractService implements SearchInterface,
portsMeta.on(2).tag("http").tag("json").tag("health").tag("state");
setProp("clustertype", "search")
.setProp("clustername", dispatchGroup.getClusterName())
- .setProp("index", nodeSpec.rowId());
+ .setProp("index", nodeSpec.groupIndex());
monitorService();
}
@@ -159,7 +159,7 @@ public class Dispatch extends AbstractService implements SearchInterface,
for (SearchInterface searchNode : dispatchGroup.getSearchersIterable()) {
final PartitionsConfig.Dataset.Engine.Builder engineBuilder = new PartitionsConfig.Dataset.Engine.Builder().
name_and_port(searchNode.getDispatcherConnectSpec()).
- rowid(searchNode.getNodeSpec().rowId()).
+ rowid(searchNode.getNodeSpec().groupIndex()).
partid(searchNode.getNodeSpec().partitionId());
allEngines.add(engineBuilder);
if (preferLocalRow) {
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/search/DispatchGroup.java b/config-model/src/main/java/com/yahoo/vespa/model/search/DispatchGroup.java
index 2d113a241c9..81a109997d1 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/search/DispatchGroup.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/search/DispatchGroup.java
@@ -32,13 +32,13 @@ public class DispatchGroup {
Map<Integer, SearchInterface> rows = searchers.get(search.getNodeSpec().partitionId());
if (rows == null) {
rows = new TreeMap<>();
- rows.put(search.getNodeSpec().rowId(), search);
+ rows.put(search.getNodeSpec().groupIndex(), search);
searchers.put(search.getNodeSpec().partitionId(), rows);
} else {
- if (rows.containsKey(search.getNodeSpec().rowId())) {
- throw new IllegalArgumentException("Already contains a search node with row id '" + search.getNodeSpec().rowId() + "'");
+ if (rows.containsKey(search.getNodeSpec().groupIndex())) {
+ throw new IllegalArgumentException("Already contains a search node with row id '" + search.getNodeSpec().groupIndex() + "'");
}
- rows.put(search.getNodeSpec().rowId(), search);
+ rows.put(search.getNodeSpec().groupIndex(), search);
}
return this;
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/search/IndexedElasticSearchCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/search/IndexedElasticSearchCluster.java
index 75833805bac..4fbc5c754af 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/search/IndexedElasticSearchCluster.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/search/IndexedElasticSearchCluster.java
@@ -3,9 +3,6 @@ package com.yahoo.vespa.model.search;
import com.yahoo.config.model.producer.AbstractConfigProducer;
-import java.util.ArrayList;
-import java.util.Collections;
-
/**
* @author baldersheim
*/
@@ -32,7 +29,7 @@ public class IndexedElasticSearchCluster extends IndexedSearchCluster {
@Override
boolean useFixedRowInDispatch() {
for (SearchNode node : getSearchNodes()) {
- if (node.getNodeSpec().rowId() > 0) {
+ if (node.getNodeSpec().groupIndex() > 0) {
return true;
}
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/search/IndexedSearchCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/search/IndexedSearchCluster.java
index 99e08f15007..27a62fae1bc 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/search/IndexedSearchCluster.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/search/IndexedSearchCluster.java
@@ -6,7 +6,6 @@ import com.yahoo.vespa.config.search.AttributesConfig;
import com.yahoo.vespa.config.search.DispatchConfig;
import com.yahoo.vespa.config.search.core.ProtonConfig;
import com.yahoo.vespa.config.search.RankProfilesConfig;
-import com.yahoo.config.model.ConfigModelRepo;
import com.yahoo.config.model.producer.AbstractConfigProducer;
import com.yahoo.prelude.fastsearch.DocumentdbInfoConfig;
import com.yahoo.search.config.IndexInfoConfig;
@@ -14,7 +13,6 @@ import com.yahoo.searchdefinition.UnproperSearch;
import com.yahoo.searchdefinition.derived.DerivedConfiguration;
import com.yahoo.vespa.configdefinition.IlscriptsConfig;
import com.yahoo.vespa.model.HostResource;
-import com.yahoo.vespa.model.Service;
import com.yahoo.vespa.model.SimpleConfigProducer;
import com.yahoo.vespa.model.container.Container;
import com.yahoo.vespa.model.container.ContainerCluster;
@@ -381,6 +379,7 @@ public abstract class IndexedSearchCluster extends SearchCluster
for (SearchNode node : getSearchNodes()) {
DispatchConfig.Node.Builder nodeBuilder = new DispatchConfig.Node.Builder();
nodeBuilder.key(node.getDistributionKey());
+ nodeBuilder.group(node.getNodeSpec().groupIndex());
nodeBuilder.host(node.getHostName());
nodeBuilder.port(node.getRpcPort());
builder.node(nodeBuilder);
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/search/NodeSpec.java b/config-model/src/main/java/com/yahoo/vespa/model/search/NodeSpec.java
index eca702bd2c6..c0629c5cba3 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/search/NodeSpec.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/search/NodeSpec.java
@@ -8,22 +8,27 @@ package com.yahoo.vespa.model.search;
*/
public class NodeSpec {
- private final int rowId;
+ private final int groupIndex;
private final int partitionId;
- public NodeSpec(int rowId, int partitionId) {
- if (rowId < 0) {
- throw new IllegalArgumentException("RowId(" + rowId + ") can not be below 0");
+ public NodeSpec(int groupIndex, int partitionId) {
+ if (groupIndex < 0) {
+ throw new IllegalArgumentException("GroupId(" + groupIndex + ") can not be below 0");
}
if (partitionId < 0) {
throw new IllegalArgumentException("PartId(" + partitionId + ") can not be below 0");
}
- this.rowId = rowId;
+ this.groupIndex = groupIndex;
this.partitionId = partitionId;
}
- public int rowId() {
- return rowId;
+ /**
+ * Returns an index of the group of this node.
+ * This is a 0-base continuous integer id, not necessarily the same as the group id assigned by the user.
+ * This group index is called a "row id" in some legacy components in Vespa for historical reasons.
+ */
+ public int groupIndex() {
+ return groupIndex;
}
public int partitionId() {
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/search/SearchNode.java b/config-model/src/main/java/com/yahoo/vespa/model/search/SearchNode.java
index 1304eded53a..1faf9f82e04 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/search/SearchNode.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/search/SearchNode.java
@@ -122,7 +122,7 @@ public class SearchNode extends AbstractService implements
}
public void updatePartition(int partitionId) {
- nodeSpec = new NodeSpec(nodeSpec.rowId(), partitionId);
+ nodeSpec = new NodeSpec(nodeSpec.groupIndex(), partitionId);
}
@Override
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/content/IndexedHierarchicDistributionTest.java b/config-model/src/test/java/com/yahoo/vespa/model/content/IndexedHierarchicDistributionTest.java
index e35e66778ef..0351edd6581 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/content/IndexedHierarchicDistributionTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/content/IndexedHierarchicDistributionTest.java
@@ -74,7 +74,7 @@ public class IndexedHierarchicDistributionTest {
}
private void assertSearchNode(int expRowId, int expPartitionId, int expDistibutionKey, SearchNode node) {
- assertEquals(expRowId, node.getNodeSpec().rowId());
+ assertEquals(expRowId, node.getNodeSpec().groupIndex());
assertEquals(expPartitionId, node.getNodeSpec().partitionId());
assertEquals(expDistibutionKey, ((ContentNode)node.getServiceLayerService()).getDistributionKey());
}
@@ -244,15 +244,15 @@ public class IndexedHierarchicDistributionTest {
}
assertEquals(5, list.size());
assertEquals(0, list.get(0).getNodeSpec().partitionId());
- assertEquals(0, list.get(0).getNodeSpec().rowId());
+ assertEquals(0, list.get(0).getNodeSpec().groupIndex());
assertEquals(0, list.get(1).getNodeSpec().partitionId());
- assertEquals(1, list.get(1).getNodeSpec().rowId());
+ assertEquals(1, list.get(1).getNodeSpec().groupIndex());
assertEquals(1, list.get(2).getNodeSpec().partitionId());
- assertEquals(0, list.get(2).getNodeSpec().rowId());
+ assertEquals(0, list.get(2).getNodeSpec().groupIndex());
assertEquals(1, list.get(3).getNodeSpec().partitionId());
- assertEquals(1, list.get(3).getNodeSpec().rowId());
+ assertEquals(1, list.get(3).getNodeSpec().groupIndex());
assertEquals(2, list.get(4).getNodeSpec().partitionId());
- assertEquals(1, list.get(4).getNodeSpec().rowId());
+ assertEquals(1, list.get(4).getNodeSpec().groupIndex());
}
@Test
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/search/MultilevelDispatchTest.java b/config-model/src/test/java/com/yahoo/vespa/model/search/MultilevelDispatchTest.java
index 30ae737af69..3c6b8fdcc10 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/search/MultilevelDispatchTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/search/MultilevelDispatchTest.java
@@ -120,7 +120,7 @@ public class MultilevelDispatchTest {
}
private void assertDispatchAndSearchNodes(int expRowId, int expPartId, int expDistributionKey, Dispatch dispatch, String[] connectSpecs, SearchNode[] searchNodes) {
- assertEquals(expRowId, dispatch.getNodeSpec().rowId());
+ assertEquals(expRowId, dispatch.getNodeSpec().groupIndex());
assertEquals(expPartId, dispatch.getNodeSpec().partitionId());
assertEquals("mycluster/search/cluster.mycluster/dispatchers/dispatch." + expDistributionKey, dispatch.getConfigId());
assertEquals(expPartId, getFdispatchrcConfig(dispatch).partition());
diff --git a/configdefinitions/src/vespa/dispatch.def b/configdefinitions/src/vespa/dispatch.def
index 4e966fae843..7c765770621 100644
--- a/configdefinitions/src/vespa/dispatch.def
+++ b/configdefinitions/src/vespa/dispatch.def
@@ -6,6 +6,9 @@ namespace=vespa.config.search
# The unique key of a search node
node[].key int
+# The index of the group this search node belongs to
+node[].group int default=0
+
# The host name of this search node
node[].host string