diff options
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 |