From b7d75ef658fbe4a5157e667b09392f1e474945fe Mon Sep 17 00:00:00 2001 From: Henning Baldersheim Date: Fri, 15 Mar 2024 14:30:35 +0100 Subject: - Only a single searchcluster per content cluster. - Check for existence of schema --- .../java/com/yahoo/vespa/model/VespaModel.java | 5 +- .../IndexedSearchClusterChangeValidator.java | 18 ++-- .../StreamingSearchClusterChangeValidator.java | 6 +- .../com/yahoo/vespa/model/content/Content.java | 5 +- .../vespa/model/content/ContentSearchCluster.java | 72 ++++++------- .../model/content/cluster/ContentCluster.java | 23 +++-- .../vespa/model/search/IndexedSearchCluster.java | 4 - .../model/provision/ModelProvisioningTest.java | 2 +- .../change/search/ContentClusterFixture.java | 4 +- .../model/builder/xml/dom/ContentBuilderTest.java | 113 ++++++++++----------- .../com/yahoo/vespa/model/content/IndexedTest.java | 2 +- .../vespa/model/content/cluster/ClusterTest.java | 2 +- 12 files changed, 121 insertions(+), 135 deletions(-) diff --git a/config-model/src/main/java/com/yahoo/vespa/model/VespaModel.java b/config-model/src/main/java/com/yahoo/vespa/model/VespaModel.java index e76e40f2235..e8103f1d1df 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/VespaModel.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/VespaModel.java @@ -55,7 +55,6 @@ import com.yahoo.vespa.model.ml.ConvertedModel; import com.yahoo.vespa.model.ml.ModelName; import com.yahoo.vespa.model.ml.OnnxModelInfo; import com.yahoo.vespa.model.routing.Routing; -import com.yahoo.vespa.model.search.DocumentDatabase; import com.yahoo.vespa.model.search.SearchCluster; import com.yahoo.vespa.model.utils.internal.ReflectionUtil; import org.xml.sax.SAXException; @@ -207,9 +206,9 @@ public final class VespaModel extends AbstractConfigProducerRoot implements Mode .map(type -> type.getFullName().getName()) .collect(Collectors.toCollection(LinkedHashSet::new)); - Set typesWithIndexedFields = content.getSearch().getIndexed() == null + Set typesWithIndexedFields = content.getSearch().getSearchCluster() == null ? Set.of() - : content.getSearch().getIndexed().schemas().values().stream() + : content.getSearch().getSearchCluster().schemas().values().stream() .filter(schemaInfo -> schemaInfo.fullSchema() .allConcreteFields() .stream().anyMatch(SDField::doesIndexing)) diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/IndexedSearchClusterChangeValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/IndexedSearchClusterChangeValidator.java index 5117fb7272c..f95ae0b6153 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/IndexedSearchClusterChangeValidator.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/IndexedSearchClusterChangeValidator.java @@ -8,10 +8,10 @@ import com.yahoo.documentmodel.NewDocumentType; import com.yahoo.vespa.model.AbstractService; import com.yahoo.vespa.model.application.validation.Validation.ChangeContext; import com.yahoo.vespa.model.application.validation.change.search.DocumentDatabaseChangeValidator; -import com.yahoo.vespa.model.content.ContentSearchCluster; import com.yahoo.vespa.model.content.cluster.ContentCluster; import com.yahoo.vespa.model.search.DocumentDatabase; import com.yahoo.vespa.model.search.IndexedSearchCluster; +import com.yahoo.vespa.model.search.SearchCluster; import java.util.ArrayList; import java.util.List; @@ -29,7 +29,7 @@ public class IndexedSearchClusterChangeValidator implements ChangeValidator { public void validate(ChangeContext context) { for (Map.Entry currentEntry : context.previousModel().getContentClusters().entrySet()) { ContentCluster nextCluster = context.model().getContentClusters().get(currentEntry.getKey()); - if (nextCluster != null && nextCluster.getSearch().hasIndexedCluster()) { + if (nextCluster != null && nextCluster.getSearch().hasSearchCluster()) { validateContentCluster(currentEntry.getValue(), nextCluster, context.deployState()).forEach(context::require); } } @@ -47,9 +47,9 @@ public class IndexedSearchClusterChangeValidator implements ChangeValidator { DeployState deployState) { List result = new ArrayList<>(); - for (DocumentDatabase currentDb : getDocumentDbs(currentCluster.getSearch())) { + for (DocumentDatabase currentDb : getDocumentDbs(currentCluster.getSearch().getSearchCluster())) { String docTypeName = currentDb.getName(); - var nextDb = nextCluster.getSearch().getIndexed().getDocumentDB(docTypeName); + var nextDb = nextCluster.getSearch().getSearchCluster().getDocumentDB(docTypeName); if (nextDb != null) { result.addAll(validateDocumentDatabase(currentCluster, nextCluster, docTypeName, currentDb, nextDb, deployState)); @@ -71,14 +71,14 @@ public class IndexedSearchClusterChangeValidator implements ChangeValidator { new DocumentDatabaseChangeValidator(currentCluster.id(), currentDb, currentDocType, nextDb, nextDocType, deployState).validate(); - return modifyActions(result, getSearchNodeServices(nextCluster.getSearch().getIndexed()), docTypeName); + return modifyActions(result, getSearchNodeServices(nextCluster.getSearch().getSearchCluster()), docTypeName); } - private static List getDocumentDbs(ContentSearchCluster cluster) { - if (cluster.getIndexed() != null) { - return cluster.getIndexed().getDocumentDbs(); + private static List getDocumentDbs(SearchCluster cluster) { + if (cluster != null) { + return cluster.getDocumentDbs(); } - return new ArrayList<>(); + return List.of(); } private static List getSearchNodeServices(IndexedSearchCluster cluster) { diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/StreamingSearchClusterChangeValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/StreamingSearchClusterChangeValidator.java index 39894d95c2c..7c1e0def42d 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/StreamingSearchClusterChangeValidator.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/StreamingSearchClusterChangeValidator.java @@ -30,9 +30,9 @@ public class StreamingSearchClusterChangeValidator implements ChangeValidator { context.previousModel().getContentClusters().forEach((clusterName, currentCluster) -> { ContentCluster nextCluster = context.model().getContentClusters().get(clusterName); if (nextCluster != null) { - if (currentCluster.getSearch().getIndexed() != null && nextCluster.getSearch().getIndexed() != null) { - validateStreamingCluster(currentCluster, currentCluster.getSearch().getIndexed(), - nextCluster, nextCluster.getSearch().getIndexed()) + if (currentCluster.getSearch().getSearchCluster() != null && nextCluster.getSearch().getSearchCluster() != null) { + validateStreamingCluster(currentCluster, currentCluster.getSearch().getSearchCluster(), + nextCluster, nextCluster.getSearch().getSearchCluster()) .forEach(context::require); } } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/Content.java b/config-model/src/main/java/com/yahoo/vespa/model/content/Content.java index 4ac7a8e442a..3ccc44fe60b 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/content/Content.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/content/Content.java @@ -136,8 +136,9 @@ public class Content extends ConfigModel { public static List getSearchClusters(ConfigModelRepo pc) { List clusters = new ArrayList<>(); for (ContentCluster c : getContentClusters(pc)) { - if (c.getSearch().hasIndexedCluster()) { - clusters.add(c.getSearch().getIndexed()); + SearchCluster sc = c.getSearch().getSearchCluster(); + if (sc != null) { + clusters.add(sc); } } return clusters; 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 378907eafd7..ebb556a2ba2 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 @@ -31,7 +31,6 @@ import java.util.Map; import java.util.Set; import java.util.LinkedHashMap; import java.util.Objects; -import java.util.TreeMap; import java.util.function.Predicate; /** @@ -51,11 +50,8 @@ public class ContentSearchCluster extends TreeConfigProducer private final boolean flushOnShutdown; private final Boolean syncTransactionLog; - /** If this is set up for streaming search, it is modelled as one search cluster per search definition */ - private final Map clusters = new TreeMap<>(); - /** The single, indexed search cluster this sets up (supporting multiple document types), or null if none */ - private IndexedSearchCluster indexedCluster; + private IndexedSearchCluster searchCluster; private final IndexingDocproc indexingDocproc; private Redundancy redundancy; @@ -135,7 +131,7 @@ public class ContentSearchCluster extends TreeConfigProducer search.setVisibilityDelay(visibilityDelay); } - IndexedSearchCluster isc = new IndexedSearchCluster(search, clusterName, 0, search, deployState.featureFlags()); + var isc = new IndexedSearchCluster(search, clusterName, 0, search, deployState.featureFlags()); search.addSearchCluster(deployState, isc, getQueryTimeout(clusterElem), docElem.subElements("document")); } } @@ -175,12 +171,12 @@ public class ContentSearchCluster extends TreeConfigProducer public void setVisibilityDelay(double delay) { this.visibilityDelay=delay; - if (hasIndexedCluster()) { - indexedCluster.setVisibilityDelay(delay); + if (searchCluster != null) { + searchCluster.setVisibilityDelay(delay); } } - private void addSearchCluster(DeployState deployState, SearchCluster cluster, Double queryTimeout, List documentDefs) { + private void addSearchCluster(DeployState deployState, IndexedSearchCluster cluster, Double queryTimeout, List documentDefs) { addSchemas(deployState, documentDefs, cluster); if (queryTimeout != null) { @@ -206,17 +202,11 @@ public class ContentSearchCluster extends TreeConfigProducer } } - private void addCluster(SearchCluster sc) { - if (clusters.containsKey(sc.getClusterName())) { - throw new IllegalArgumentException("Duplicate cluster '" + sc.getClusterName() + "'"); - } - if (sc instanceof IndexedSearchCluster) { - if (indexedCluster != null) { - throw new IllegalArgumentException("Duplicate indexed cluster '" + indexedCluster.getClusterName() + "'"); - } - indexedCluster = (IndexedSearchCluster)sc; + private void addCluster(IndexedSearchCluster sc) { + if (searchCluster != null) { + throw new IllegalArgumentException("Duplicate indexed cluster '" + searchCluster.getClusterName() + "'"); } - clusters.put(sc.getClusterName(), sc); + searchCluster = sc; } /** @@ -226,26 +216,26 @@ public class ContentSearchCluster extends TreeConfigProducer * with indexing, null if it has both or none. */ public Boolean isStreaming() { - if (indexedCluster == null) return false; - boolean hasStreaming = indexedCluster.hasStreaming(); - if (indexedCluster.hasIndexed() == hasStreaming) return null; + if (searchCluster == null) return false; + boolean hasStreaming = searchCluster.hasStreaming(); + if (searchCluster.hasIndexed() == hasStreaming) return null; return hasStreaming; } public boolean hasStreaming() { - return (indexedCluster != null) && indexedCluster.hasStreaming(); + return (searchCluster != null) && searchCluster.hasStreaming(); } public boolean hasIndexed() { - return (indexedCluster != null) && indexedCluster.hasIndexed(); + return (searchCluster != null) && searchCluster.hasIndexed(); } public List getSearchNodes() { - return hasIndexedCluster() ? getIndexed().getSearchNodes() : nonIndexed; + return (searchCluster != null) ? searchCluster.getSearchNodes() : nonIndexed; } public void addSearchNode(DeployState deployState, ContentNode node, StorageGroup parentGroup, ModelElement element) { - TreeConfigProducer parent = hasIndexedCluster() ? getIndexed() : this; + TreeConfigProducer parent = (searchCluster != null) ? searchCluster : this; NodeSpec spec = getNextSearchNodeSpec(parentGroup); SearchNode searchNode; @@ -267,8 +257,8 @@ public class ContentSearchCluster extends TreeConfigProducer tls = new TransactionLogServer.Builder(clusterName, syncTransactionLog).build(deployState, searchNode, element.getXml()); } searchNode.setTls(tls); - if (hasIndexedCluster()) { - getIndexed().addSearcher(searchNode); + if (searchCluster != null) { + searchCluster.addSearcher(searchNode); } else { nonIndexed.add(searchNode); } @@ -295,7 +285,7 @@ public class ContentSearchCluster extends TreeConfigProducer } public boolean usesHierarchicDistribution() { - return indexedCluster != null && groupToSpecMap.size() > 1; + return searchCluster != null && groupToSpecMap.size() > 1; } public void handleRedundancy(Redundancy redundancy) { @@ -313,14 +303,14 @@ public class ContentSearchCluster extends TreeConfigProducer } private boolean hasIndexingModeStreaming(NewDocumentType type) { - if (indexedCluster == null) return false; - var schemaInfo = indexedCluster.schemas().get(type.getName()); + if (searchCluster == null) return false; + var schemaInfo = searchCluster.schemas().get(type.getName()); return (schemaInfo != null) && (schemaInfo.getIndexMode() == SchemaInfo.IndexMode.STREAMING); } private boolean hasIndexingModeIndexed(NewDocumentType type) { - if (indexedCluster == null) return false; - var schemaInfo = indexedCluster.schemas().get(type.getName()); + if (searchCluster == null) return false; + var schemaInfo = searchCluster.schemas().get(type.getName()); return (schemaInfo != null) && (schemaInfo.getIndexMode() == SchemaInfo.IndexMode.INDEX); } @@ -343,10 +333,10 @@ public class ContentSearchCluster extends TreeConfigProducer if (hasIndexingModeStreaming(type)) { hasAnyNonIndexedSchema = true; - indexedCluster.fillDocumentDBConfig(type.getFullName().getName(), ddbB); + searchCluster.fillDocumentDBConfig(type.getFullName().getName(), ddbB); ddbB.mode(ProtonConfig.Documentdb.Mode.Enum.STREAMING); } else if (hasIndexingModeIndexed(type)) { - indexedCluster.fillDocumentDBConfig(type.getFullName().getName(), ddbB); + searchCluster.fillDocumentDBConfig(type.getFullName().getName(), ddbB); } else { hasAnyNonIndexedSchema = true; ddbB.mode(ProtonConfig.Documentdb.Mode.Enum.STORE_ONLY); @@ -400,19 +390,19 @@ public class ContentSearchCluster extends TreeConfigProducer @Override public void getConfig(DispatchNodesConfig.Builder builder) { - if (hasIndexedCluster()) { - getIndexed().getConfig(builder); + if (searchCluster != null) { + searchCluster.getConfig(builder); } } @Override public void getConfig(DispatchConfig.Builder builder) { - if (hasIndexedCluster()) { - getIndexed().getConfig(builder); + if (searchCluster != null) { + searchCluster.getConfig(builder); } } - public IndexedSearchCluster getIndexed() { return indexedCluster; } - public boolean hasIndexedCluster() { return indexedCluster != null; } + public IndexedSearchCluster getSearchCluster() { return searchCluster; } + public boolean hasSearchCluster() { return searchCluster != null; } public IndexingDocproc getIndexingDocproc() { return indexingDocproc; } public String getClusterName() { return clusterName; } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/ContentCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/ContentCluster.java index 5a9b4bb0760..bac86e37e8f 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/ContentCluster.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/ContentCluster.java @@ -73,14 +73,14 @@ import static java.util.logging.Level.WARNING; * @author bratseth */ public class ContentCluster extends TreeConfigProducer implements - DistributionConfig.Producer, - StorDistributionConfig.Producer, - StorDistributormanagerConfig.Producer, - FleetcontrollerConfig.Producer, - MetricsmanagerConfig.Producer, - MessagetyperouteselectorpolicyConfig.Producer, - BucketspacesConfig.Producer { - + DistributionConfig.Producer, + StorDistributionConfig.Producer, + StorDistributormanagerConfig.Producer, + FleetcontrollerConfig.Producer, + MetricsmanagerConfig.Producer, + MessagetyperouteselectorpolicyConfig.Producer, + BucketspacesConfig.Producer +{ private final String documentSelection; private ContentSearchCluster search; private final boolean isHosted; @@ -177,8 +177,9 @@ public class ContentCluster extends TreeConfigProducer implem if (visibilityDelay != null) { csc.setVisibilityDelay(visibilityDelay); } - if (csc.hasIndexedCluster()) { - setupIndexedCluster(csc.getIndexed(), search, element, logger); + IndexedSearchCluster sc = csc.getSearchCluster(); + if (sc != null) { + setupIndexedCluster(sc, search, element, logger); } } @@ -530,7 +531,7 @@ public class ContentCluster extends TreeConfigProducer implem super.validate(); if (search.usesHierarchicDistribution() && !isHosted) { // validate manually configured groups - new IndexedHierarchicDistributionValidator(rootGroup, redundancy, search.getIndexed().getTuning().dispatch.getDispatchPolicy()).validate(); + new IndexedHierarchicDistributionValidator(rootGroup, redundancy, search.getSearchCluster().getTuning().dispatch.getDispatchPolicy()).validate(); } new ReservedDocumentTypeNameValidator().validate(documentDefinitions); new GlobalDistributionValidator().validate(documentDefinitions, globallyDistributedDocuments); 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 67d99e300de..c9c7e424ee6 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 @@ -2,12 +2,8 @@ package com.yahoo.vespa.model.search; import com.yahoo.config.model.api.ModelContext; -import com.yahoo.config.model.deploy.DeployState; import com.yahoo.config.model.producer.AnyConfigProducer; import com.yahoo.config.model.producer.TreeConfigProducer; -import com.yahoo.schema.DocumentOnlySchema; -import com.yahoo.schema.derived.DerivedConfiguration; -import com.yahoo.schema.derived.SchemaInfo; import com.yahoo.vespa.config.search.DispatchConfig; import com.yahoo.vespa.config.search.DispatchConfig.DistributionPolicy; import com.yahoo.vespa.config.search.DispatchNodesConfig; 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 b1d90b07b9d..5ead9812b56 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 @@ -2480,7 +2480,7 @@ public class ModelProvisioningTest { private long protonMemorySize(ContentCluster cluster) { ProtonConfig.Builder b = new ProtonConfig.Builder(); - cluster.getSearch().getIndexed().getSearchNode(0).getConfig(b); + cluster.getSearch().getSearchCluster().getSearchNode(0).getConfig(b); return b.build().hwinfo().memory().size(); } diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/search/ContentClusterFixture.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/search/ContentClusterFixture.java index e531087ebd6..91ba97817d6 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/search/ContentClusterFixture.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/search/ContentClusterFixture.java @@ -44,7 +44,7 @@ public abstract class ContentClusterFixture { } protected DocumentDatabase currentDb() { - return currentCluster.getSearch().getIndexed().getDocumentDbs().get(0); + return currentCluster.getSearch().getSearchCluster().getDocumentDbs().get(0); } protected NewDocumentType currentDocType() { @@ -52,7 +52,7 @@ public abstract class ContentClusterFixture { } protected DocumentDatabase nextDb() { - return nextCluster.getSearch().getIndexed().getDocumentDbs().get(0); + return nextCluster.getSearch().getSearchCluster().getDocumentDbs().get(0); } protected NewDocumentType nextDocType() { diff --git a/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/ContentBuilderTest.java b/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/ContentBuilderTest.java index a4a5f4cb4df..fac82f3e675 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/ContentBuilderTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/ContentBuilderTest.java @@ -62,7 +62,7 @@ public class ContentBuilderTest extends DomBuilderTest { ""); ContentSearchCluster s = a.getSearch(); - assertFalse(s.hasIndexedCluster()); + assertFalse(s.hasSearchCluster()); assertTrue(a.getPersistence() instanceof com.yahoo.vespa.model.content.engines.DummyPersistence.Factory); } @@ -81,7 +81,7 @@ public class ContentBuilderTest extends DomBuilderTest { ""); ContentSearchCluster s = a.getSearch(); - assertFalse(s.hasIndexedCluster()); + assertFalse(s.hasSearchCluster()); assertTrue(a.getPersistence() instanceof ProtonEngine.Factory); @@ -105,7 +105,7 @@ public class ContentBuilderTest extends DomBuilderTest { ""); ContentSearchCluster s = a.getSearch(); - assertFalse(s.hasIndexedCluster()); + assertFalse(s.hasSearchCluster()); assertTrue(a.getPersistence() instanceof ProtonEngine.Factory); @@ -126,8 +126,8 @@ public class ContentBuilderTest extends DomBuilderTest { ""); ContentSearchCluster s = a.getSearch(); - assertFalse(s.hasIndexedCluster()); - assertNull(s.getIndexed()); + assertFalse(s.hasSearchCluster()); + assertNull(s.getSearchCluster()); assertNull(a.getRootGroup().getName()); assertNull(a.getRootGroup().getIndex()); @@ -146,10 +146,10 @@ public class ContentBuilderTest extends DomBuilderTest { ContentCluster c = CollectionUtil.first(m.getContentClusters().values()); ContentSearchCluster s = c.getSearch(); - assertTrue(s.hasIndexedCluster()); - assertNotNull(s.getIndexed()); - assertEquals("clu", s.getIndexed().getClusterName()); - assertEquals(7.3, s.getIndexed().getQueryTimeout(), 0.0); + assertTrue(s.hasSearchCluster()); + assertNotNull(s.getSearchCluster()); + assertEquals("clu", s.getSearchCluster().getClusterName()); + assertEquals(7.3, s.getSearchCluster().getQueryTimeout(), 0.0); assertTrue(c.getPersistence() instanceof ProtonEngine.Factory); assertEquals(1, c.getStorageCluster().getChildren().size()); @@ -170,7 +170,7 @@ public class ContentBuilderTest extends DomBuilderTest { String services = getServices("" + ""); VespaModel m = new VespaModelCreatorWithMockPkg(createAppWithMusic(getHosts(), services)).create(); - IndexedSearchCluster sc = m.getContentClusters().get("clu").getSearch().getIndexed(); + IndexedSearchCluster sc = m.getContentClusters().get("clu").getSearch().getSearchCluster(); assertEquals(2, sc.getSearchNodeCount()); } @@ -191,8 +191,8 @@ public class ContentBuilderTest extends DomBuilderTest { ContentSearchCluster s; s = cluster.getSearch(); - assertTrue(s.hasIndexedCluster()); - SearchCluster sc = s.getIndexed(); + assertTrue(s.hasSearchCluster()); + SearchCluster sc = s.getSearchCluster(); assertEquals(musicClusterId, sc.getClusterName()); assertEquals(musicClusterId, sc.getStorageRouteSpec()); @@ -230,10 +230,10 @@ public class ContentBuilderTest extends DomBuilderTest { " " + ""); ContentSearchCluster s = cluster.getSearch(); - assertTrue(s.hasIndexedCluster()); - assertEquals(2, s.getIndexed().getDocumentDbs().size()); - assertTrue(s.getIndexed().hasDocumentDB("book")); - assertTrue(s.getIndexed().hasDocumentDB("music")); + assertTrue(s.hasSearchCluster()); + assertEquals(2, s.getSearchCluster().getDocumentDbs().size()); + assertTrue(s.getSearchCluster().hasDocumentDB("book")); + assertTrue(s.getSearchCluster().hasDocumentDB("music")); assertTrue(cluster.getPersistence() instanceof ProtonEngine.Factory); assertEquals(1, cluster.getStorageCluster().getChildren().size()); @@ -256,9 +256,9 @@ public class ContentBuilderTest extends DomBuilderTest { ContentSearchCluster s; s = b.getSearch(); - assertTrue(s.hasIndexedCluster()); - assertNotNull(s.getIndexed()); - assertEquals("b", s.getIndexed().getClusterName()); + assertTrue(s.hasSearchCluster()); + assertNotNull(s.getSearchCluster()); + assertEquals("b", s.getSearchCluster().getClusterName()); assertTrue(b.getPersistence() instanceof ProtonEngine.Factory); assertEquals(1, b.getStorageCluster().getChildren().size()); @@ -287,8 +287,8 @@ public class ContentBuilderTest extends DomBuilderTest { ContentSearchCluster s; s = b.getSearch(); - assertTrue(s.hasIndexedCluster()); - assertNotNull(s.getIndexed()); + assertTrue(s.hasSearchCluster()); + assertNotNull(s.getSearchCluster()); assertEquals(2, b.getStorageCluster().getChildren().size()); assertTrue(b.getRootGroup().getMmapNoCoreLimit().isPresent()); assertEquals(200000, b.getRootGroup().getMmapNoCoreLimit().get().longValue()); @@ -313,8 +313,8 @@ public class ContentBuilderTest extends DomBuilderTest { ContentSearchCluster s; s = b.getSearch(); - assertTrue(s.hasIndexedCluster()); - assertNotNull(s.getIndexed()); + assertTrue(s.hasSearchCluster()); + assertNotNull(s.getSearchCluster()); assertEquals(1, b.getStorageCluster().getChildren().size()); assertEquals(1, s.getSearchNodes().size()); @@ -342,8 +342,8 @@ public class ContentBuilderTest extends DomBuilderTest { " " + "", new TestProperties().setEnvironmentVariables(List.of("MY_1_ENV=xyz abc", "MY_2_ENV=2"))); ContentSearchCluster s = b.getSearch(); - assertTrue(s.hasIndexedCluster()); - assertNotNull(s.getIndexed()); + assertTrue(s.hasSearchCluster()); + assertNotNull(s.getSearchCluster()); assertEquals(1, b.getStorageCluster().getChildren().size()); assertEquals(1, s.getSearchNodes().size()); @@ -368,8 +368,8 @@ public class ContentBuilderTest extends DomBuilderTest { ContentSearchCluster s; s = b.getSearch(); - assertTrue(s.hasIndexedCluster()); - assertNotNull(s.getIndexed()); + assertTrue(s.hasSearchCluster()); + assertNotNull(s.getSearchCluster()); assertEquals(2, b.getStorageCluster().getChildren().size()); assertTrue(b.getRootGroup().getCoreOnOOM().isPresent()); assertTrue(b.getRootGroup().getCoreOnOOM().get()); @@ -393,8 +393,8 @@ public class ContentBuilderTest extends DomBuilderTest { " " + ""); ContentSearchCluster s = b.getSearch(); - assertTrue(s.hasIndexedCluster()); - assertNotNull(s.getIndexed()); + assertTrue(s.hasSearchCluster()); + assertNotNull(s.getSearchCluster()); assertEquals(2, b.getStorageCluster().getChildren().size()); assertFalse(b.getRootGroup().getCoreOnOOM().isPresent()); @@ -417,8 +417,8 @@ public class ContentBuilderTest extends DomBuilderTest { " " + ""); ContentSearchCluster s = b.getSearch(); - assertTrue(s.hasIndexedCluster()); - assertNotNull(s.getIndexed()); + assertTrue(s.hasSearchCluster()); + assertNotNull(s.getSearchCluster()); assertEquals(2, b.getStorageCluster().getChildren().size()); assertFalse(b.getRootGroup().getMmapNoCoreLimit().isPresent()); @@ -441,8 +441,8 @@ public class ContentBuilderTest extends DomBuilderTest { " " + ""); ContentSearchCluster s = b.getSearch(); - assertTrue(s.hasIndexedCluster()); - assertNotNull(s.getIndexed()); + assertTrue(s.hasSearchCluster()); + assertNotNull(s.getSearchCluster()); assertEquals(2, b.getStorageCluster().getChildren().size()); assertFalse(b.getRootGroup().getCoreOnOOM().isPresent()); @@ -467,8 +467,8 @@ public class ContentBuilderTest extends DomBuilderTest { " " + ""); ContentSearchCluster s = b.getSearch(); - assertTrue(s.hasIndexedCluster()); - assertNotNull(s.getIndexed()); + assertTrue(s.hasSearchCluster()); + assertNotNull(s.getSearchCluster()); assertEquals(4, b.getStorageCluster().getChildren().size()); assertTrue(b.getRootGroup().getNoVespaMalloc().isPresent()); assertEquals("proton", b.getRootGroup().getNoVespaMalloc().get()); @@ -501,8 +501,8 @@ public class ContentBuilderTest extends DomBuilderTest { " " + ""); ContentSearchCluster s = b.getSearch(); - assertTrue(s.hasIndexedCluster()); - assertNotNull(s.getIndexed()); + assertTrue(s.hasSearchCluster()); + assertNotNull(s.getSearchCluster()); assertEquals(4, b.getStorageCluster().getChildren().size()); assertFalse(b.getRootGroup().getNoVespaMalloc().isPresent()); assertFalse(b.getRootGroup().getVespaMalloc().isPresent()); @@ -532,8 +532,8 @@ public class ContentBuilderTest extends DomBuilderTest { ContentSearchCluster s; s = b.getSearch(); - assertTrue(s.hasIndexedCluster()); - assertNotNull(s.getIndexed()); + assertTrue(s.hasSearchCluster()); + assertNotNull(s.getSearchCluster()); assertEquals(2, b.getStorageCluster().getChildren().size()); assertTrue(b.getStorageCluster().getChildren().get("0").getAffinity().isPresent()); assertEquals(0, b.getStorageCluster().getChildren().get("0").getAffinity().get().cpuSocket()); @@ -567,8 +567,8 @@ public class ContentBuilderTest extends DomBuilderTest { ContentSearchCluster s; s = b.getSearch(); - assertTrue(s.hasIndexedCluster()); - assertNotNull(s.getIndexed()); + assertTrue(s.hasSearchCluster()); + assertNotNull(s.getSearchCluster()); assertEquals(6, b.getStorageCluster().getChildren().size()); assertTrue(b.getRootGroup().useCpuSocketAffinity()); @@ -606,18 +606,17 @@ public class ContentBuilderTest extends DomBuilderTest { void requireBug5357273() { try { createContent( - " \n" + - " 3\n" + - " " + - " " + - " " + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n" + - " \n"); + """ + + 3 + + + + + + + + """); fail(); } catch (Exception e) { @@ -695,8 +694,8 @@ public class ContentBuilderTest extends DomBuilderTest { " " + ""); ProtonConfig.Builder builder = new ProtonConfig.Builder(); - content.getSearch().getIndexed().getSearchNode(0).cascadeConfig(builder); - content.getSearch().getIndexed().getSearchNode(0).addUserConfig(builder); + content.getSearch().getSearchCluster().getSearchNode(0).cascadeConfig(builder); + content.getSearch().getSearchCluster().getSearchNode(0).addUserConfig(builder); ProtonConfig config = new ProtonConfig(builder); assertEquals(1, config.search().mmap().options().size()); assertEquals(ProtonConfig.Search.Mmap.Options.POPULATE, config.search().mmap().options(0)); @@ -826,8 +825,8 @@ public class ContentBuilderTest extends DomBuilderTest { private ProtonConfig getProtonConfig(ContentCluster content) { ProtonConfig.Builder configBuilder = new ProtonConfig.Builder(); - content.getSearch().getIndexed().getSearchNode(0).cascadeConfig(configBuilder); - content.getSearch().getIndexed().getSearchNode(0).addUserConfig(configBuilder); + content.getSearch().getSearchCluster().getSearchNode(0).cascadeConfig(configBuilder); + content.getSearch().getSearchCluster().getSearchNode(0).addUserConfig(configBuilder); return new ProtonConfig(configBuilder); } diff --git a/config-model/src/test/java/com/yahoo/vespa/model/content/IndexedTest.java b/config-model/src/test/java/com/yahoo/vespa/model/content/IndexedTest.java index ae08f78c404..e9e96d8b0cf 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/content/IndexedTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/content/IndexedTest.java @@ -113,7 +113,7 @@ public class IndexedTest extends ContentBaseTest { VespaModelCreatorWithMockPkg creator = getIndexedVespaModelCreator(); VespaModel model = creator.create(); DeployState deployState = creator.deployState; - IndexedSearchCluster cluster = model.getContentClusters().get("test").getSearch().getIndexed(); + IndexedSearchCluster cluster = model.getContentClusters().get("test").getSearch().getSearchCluster(); assertEquals(3, cluster.getDocumentDbs().size()); NewDocumentType type1 = deployState.getDocumentModel().getDocumentManager().getDocumentType("type1"); NewDocumentType type2 = deployState.getDocumentModel().getDocumentManager().getDocumentType("type2"); diff --git a/config-model/src/test/java/com/yahoo/vespa/model/content/cluster/ClusterTest.java b/config-model/src/test/java/com/yahoo/vespa/model/content/cluster/ClusterTest.java index 0cdcf0534c2..8b83c941631 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/content/cluster/ClusterTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/content/cluster/ClusterTest.java @@ -30,7 +30,7 @@ public class ClusterTest { " 1.1", " 2.3", "")); - SearchCluster searchCluster = cluster.getSearch().getIndexed(); + SearchCluster searchCluster = cluster.getSearch().getSearchCluster(); assertNotNull(searchCluster); assertEquals(1.1, searchCluster.getQueryTimeout(), DELTA); assertEquals(2.3, searchCluster.getVisibilityDelay(), DELTA); -- cgit v1.2.3 From ebfc7be5f5b6383e02c142b7e38bc4cc57b26324 Mon Sep 17 00:00:00 2001 From: Henning Baldersheim Date: Fri, 15 Mar 2024 15:54:10 +0100 Subject: Add necessary config to ClusterConfig to avoid hidden relation via clusterId to QrSearchersConfig --- .../search/searchchain/LocalProvider.java | 17 +----------- .../yahoo/vespa/model/search/SearchCluster.java | 25 ++++++++++++++++++ .../configdefinitions/container.qr-searchers.def | 4 --- container-search/abi-spec.json | 2 +- .../com/yahoo/prelude/cluster/ClusterSearcher.java | 30 +++++----------------- .../prelude/searcher/ValidateSortingSearcher.java | 21 ++++++--------- .../yahoo/search/grouping/GroupingValidator.java | 12 +++------ .../searchers/ValidateMatchPhaseSearcher.java | 1 - .../configdefinitions/search.config.cluster.def | 15 ++++++----- .../prelude/cluster/ClusterSearcherTestCase.java | 1 - .../test/ValidateSortingSearcherTestCase.java | 12 +++------ .../search/grouping/GroupingValidatorTestCase.java | 19 +++++--------- 12 files changed, 63 insertions(+), 96 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 da7dfdc7b84..554dacb39e3 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 @@ -17,7 +17,6 @@ import com.yahoo.vespa.model.search.SearchCluster; import java.util.ArrayList; import java.util.LinkedHashSet; import java.util.List; -import java.util.Objects; import java.util.Set; /** @@ -38,12 +37,7 @@ public class LocalProvider extends Provider implements @Override public void getConfig(ClusterConfig.Builder builder) { - Objects.requireNonNull(searchCluster, "Null search cluster!"); - builder.clusterId(searchCluster.getClusterIndex()); - builder.clusterName(searchCluster.getClusterName()); - - if (searchCluster.getVisibilityDelay() != null) - builder.cacheTimeout(convertVisibilityDelay(searchCluster.getVisibilityDelay())); + searchCluster.getConfig(builder); } @Override @@ -131,13 +125,4 @@ public class LocalProvider extends Provider implements searchCluster.getConfig(builder); } - // The semantics of visibility delay in search is deactivating caches if the - // delay is less than 1.0, in qrs the cache is deactivated if the delay is 0 - // (or less). 1.0 seems a little arbitrary, so just doing the conversion - // here instead of having two totally independent implementations having to - // follow each other down in the modules. - private static Double convertVisibilityDelay(Double visibilityDelay) { - return (visibilityDelay < 1.0d) ? 0.0d : visibilityDelay; - } - } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/search/SearchCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/search/SearchCluster.java index 9d459259253..8a60930664e 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/search/SearchCluster.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/search/SearchCluster.java @@ -7,6 +7,7 @@ import com.yahoo.container.QrSearchersConfig; import com.yahoo.schema.DocumentOnlySchema; import com.yahoo.schema.derived.AttributeFields; import com.yahoo.schema.derived.DerivedConfiguration; +import com.yahoo.search.config.ClusterConfig; import com.yahoo.search.config.SchemaInfoConfig; import com.yahoo.schema.derived.SchemaInfo; import com.yahoo.vespa.config.search.AttributesConfig; @@ -217,6 +218,30 @@ public abstract class SearchCluster extends TreeConfigProducer(com.yahoo.container.QrSearchersConfig, com.yahoo.search.config.ClusterConfig, com.yahoo.vespa.config.search.AttributesConfig)", + "public void (com.yahoo.search.config.ClusterConfig, com.yahoo.vespa.config.search.AttributesConfig)", "public com.yahoo.search.Result search(com.yahoo.search.Query, com.yahoo.search.searchchain.Execution)" ], "fields" : [ diff --git a/container-search/src/main/java/com/yahoo/prelude/cluster/ClusterSearcher.java b/container-search/src/main/java/com/yahoo/prelude/cluster/ClusterSearcher.java index 855a524473d..cb5ac7a6a4f 100644 --- a/container-search/src/main/java/com/yahoo/prelude/cluster/ClusterSearcher.java +++ b/container-search/src/main/java/com/yahoo/prelude/cluster/ClusterSearcher.java @@ -6,7 +6,6 @@ import com.yahoo.component.annotation.Inject; import com.yahoo.component.ComponentId; import com.yahoo.component.chain.dependencies.After; import com.yahoo.component.provider.ComponentRegistry; -import com.yahoo.container.QrSearchersConfig; import com.yahoo.container.core.documentapi.VespaDocumentAccess; import com.yahoo.container.handler.VipStatus; import com.yahoo.prelude.fastsearch.ClusterParams; @@ -71,7 +70,6 @@ public class ClusterSearcher extends Searcher { @Inject public ClusterSearcher(ComponentId id, Executor executor, - QrSearchersConfig qrsConfig, ClusterConfig clusterConfig, DocumentdbInfoConfig documentDbConfig, SchemaInfo schemaInfo, @@ -84,7 +82,6 @@ public class ClusterSearcher extends Searcher { this.schemaInfo = schemaInfo; int searchClusterIndex = clusterConfig.clusterId(); searchClusterName = clusterConfig.clusterName(); - QrSearchersConfig.Searchcluster searchClusterConfig = getSearchClusterConfigFromClusterName(qrsConfig, searchClusterName); this.globalPhaseRanker = globalPhaseRanker; schema2Searcher = new LinkedHashMap<>(); @@ -92,9 +89,7 @@ public class ClusterSearcher extends Searcher { maxQueryCacheTimeout = ParameterParser.asMilliSeconds(clusterConfig.maxQueryCacheTimeout(), DEFAULT_MAX_QUERY_CACHE_TIMEOUT); VespaBackend streaming = null, indexed = null; - ClusterParams clusterParams = makeClusterParams(searchClusterIndex, qrsConfig - .com().yahoo().prelude().fastsearch().IndexedBackend().docsum() - .defaultclass(), documentDbConfig, schemaInfo); + ClusterParams clusterParams = makeClusterParams(searchClusterIndex, documentDbConfig, schemaInfo); for (DocumentdbInfoConfig.Documentdb docDb : documentDbConfig.documentdb()) { if (docDb.mode() == DocumentdbInfoConfig.Documentdb.Mode.Enum.INDEX) { if (indexed == null) { @@ -103,7 +98,7 @@ public class ClusterSearcher extends Searcher { schema2Searcher.put(docDb.name(), indexed); } else if (docDb.mode() == DocumentdbInfoConfig.Documentdb.Mode.Enum.STREAMING) { if (streaming == null) { - streaming = streamingCluster(clusterParams, searchClusterConfig, access); + streaming = streamingCluster(clusterParams, clusterConfig, access); vipStatus.addToRotation(streaming.getName()); } schema2Searcher.put(docDb.name(), streaming); @@ -111,21 +106,10 @@ public class ClusterSearcher extends Searcher { } } - private static QrSearchersConfig.Searchcluster getSearchClusterConfigFromClusterName(QrSearchersConfig config, String name) { - for (QrSearchersConfig.Searchcluster searchCluster : config.searchcluster()) { - if (searchCluster.name().equals(name)) { - return searchCluster; - } - } - throw new IllegalStateException("No configured search cluster '" + name + "' among : " + - config.searchcluster().stream().map(QrSearchersConfig.Searchcluster::name).toList()); - } - - private static ClusterParams makeClusterParams(int searchclusterIndex, String defaultSummary, - DocumentdbInfoConfig documentDbConfig, SchemaInfo schemaInfo) + private static ClusterParams makeClusterParams(int searchclusterIndex, DocumentdbInfoConfig documentDbConfig, SchemaInfo schemaInfo) { return new ClusterParams("sc" + searchclusterIndex + ".num" + 0, UUID.randomUUID().toString(), - defaultSummary, documentDbConfig, schemaInfo); + null, documentDbConfig, schemaInfo); } private static IndexedBackend searchDispatch(ClusterParams clusterParams, @@ -140,11 +124,11 @@ public class ClusterSearcher extends Searcher { } private static StreamingBackend streamingCluster(ClusterParams clusterParams, - QrSearchersConfig.Searchcluster searchClusterConfig, + ClusterConfig clusterConfig, VespaDocumentAccess access) { - return new StreamingBackend(clusterParams, searchClusterConfig.rankprofiles_configid(), - access, searchClusterConfig.storagecluster().routespec()); + return new StreamingBackend(clusterParams, clusterConfig.configid(), + access, clusterConfig.storageRoute()); } /** Do not use, for internal testing purposes only. **/ diff --git a/container-search/src/main/java/com/yahoo/prelude/searcher/ValidateSortingSearcher.java b/container-search/src/main/java/com/yahoo/prelude/searcher/ValidateSortingSearcher.java index a25cc30955e..96bf40195e9 100644 --- a/container-search/src/main/java/com/yahoo/prelude/searcher/ValidateSortingSearcher.java +++ b/container-search/src/main/java/com/yahoo/prelude/searcher/ValidateSortingSearcher.java @@ -3,7 +3,6 @@ package com.yahoo.prelude.searcher; import com.yahoo.component.chain.dependencies.After; import com.yahoo.component.chain.dependencies.Before; -import com.yahoo.container.QrSearchersConfig; import com.yahoo.search.Query; import com.yahoo.search.Result; import com.yahoo.search.Searcher; @@ -32,14 +31,12 @@ public class ValidateSortingSearcher extends Searcher { private Map attributeNames = null; private String clusterName = ""; - private final QrSearchersConfig.Searchcluster.Indexingmode.Enum indexingMode; + private final boolean enabled; - public ValidateSortingSearcher(QrSearchersConfig qrsConfig, ClusterConfig clusterConfig, - AttributesConfig attributesConfig) { + public ValidateSortingSearcher(ClusterConfig clusterConfig, AttributesConfig attributesConfig) { initAttributeNames(attributesConfig); - var searchCluster = qrsConfig.searchcluster(clusterConfig.clusterId()); - setClusterName(searchCluster.name()); - indexingMode = searchCluster.indexingmode(); + setClusterName(clusterConfig.clusterName()); + enabled = clusterConfig.indexMode() != ClusterConfig.IndexMode.Enum.STREAMING; } public String getClusterName() { @@ -70,12 +67,10 @@ public class ValidateSortingSearcher extends Searcher { @Override public Result search(Query query, Execution execution) { ErrorMessage e = validate(query); - if (indexingMode != QrSearchersConfig.Searchcluster.Indexingmode.STREAMING) { - if (e != null) { - Result r = new Result(query); - r.hits().addError(e); - return r; - } + if (enabled && e != null) { + Result r = new Result(query); + r.hits().addError(e); + return r; } return execution.search(query); } diff --git a/container-search/src/main/java/com/yahoo/search/grouping/GroupingValidator.java b/container-search/src/main/java/com/yahoo/search/grouping/GroupingValidator.java index d4e295fb51f..165469d59ee 100644 --- a/container-search/src/main/java/com/yahoo/search/grouping/GroupingValidator.java +++ b/container-search/src/main/java/com/yahoo/search/grouping/GroupingValidator.java @@ -8,7 +8,6 @@ import com.yahoo.component.chain.dependencies.Provides; import com.yahoo.processing.IllegalInputException; import com.yahoo.search.grouping.request.AttributeMapLookupValue; import com.yahoo.vespa.config.search.AttributesConfig; -import com.yahoo.container.QrSearchersConfig; import com.yahoo.processing.request.CompoundName; import com.yahoo.search.Query; import com.yahoo.search.Result; @@ -45,17 +44,12 @@ public class GroupingValidator extends Searcher { /** * Constructs a new instance of this searcher with the given component id and config. * - * @param qrsConfig The shared config for all searchers. * @param clusterConfig The config for the cluster that this searcher is deployed for. */ @Inject - public GroupingValidator(QrSearchersConfig qrsConfig, ClusterConfig clusterConfig, - AttributesConfig attributesConfig) { - int clusterId = clusterConfig.clusterId(); - var searchCluster = qrsConfig.searchcluster(clusterId); - QrSearchersConfig.Searchcluster.Indexingmode.Enum indexingMode = searchCluster.indexingmode(); - enabled = (indexingMode != QrSearchersConfig.Searchcluster.Indexingmode.STREAMING); - clusterName = searchCluster.name(); + public GroupingValidator(ClusterConfig clusterConfig, AttributesConfig attributesConfig) { + enabled = (clusterConfig.indexMode() != ClusterConfig.IndexMode.Enum.STREAMING); + clusterName = clusterConfig.clusterName(); for (AttributesConfig.Attribute attr : attributesConfig.attribute()) { attributes.put(attr.name(), attr); } diff --git a/container-search/src/main/java/com/yahoo/search/searchers/ValidateMatchPhaseSearcher.java b/container-search/src/main/java/com/yahoo/search/searchers/ValidateMatchPhaseSearcher.java index 7761660d551..c5ffb6c02ea 100644 --- a/container-search/src/main/java/com/yahoo/search/searchers/ValidateMatchPhaseSearcher.java +++ b/container-search/src/main/java/com/yahoo/search/searchers/ValidateMatchPhaseSearcher.java @@ -1,7 +1,6 @@ // Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.search.searchers; -import com.yahoo.container.QrSearchersConfig; import com.yahoo.search.Query; import com.yahoo.search.Result; import com.yahoo.search.Searcher; diff --git a/container-search/src/main/resources/configdefinitions/search.config.cluster.def b/container-search/src/main/resources/configdefinitions/search.config.cluster.def index 2bd98f86ca8..ac88d5baa24 100644 --- a/container-search/src/main/resources/configdefinitions/search.config.cluster.def +++ b/container-search/src/main/resources/configdefinitions/search.config.cluster.def @@ -5,17 +5,11 @@ namespace=search.config #Note: Use clusterName where possible instead clusterId int default=0 -# Not used -cacheSize int default=1 - #Timeout for internal searcher cache. Entries older than this number #of seconds will be removed from cache. 0 or less means the cache is #disabled. cacheTimeout double default=0 -#Whether or not to try another TLD if the current request fails. -failoverToRemote bool default=false - #The name of the cluster (as specified in qr-searchers) clusterName string @@ -25,3 +19,12 @@ maxQueryTimeout double default=600 #The maximum query timeout allowed before disabling the backend query cache for the given query (default 10 seconds). #Note that the query timeout is used as the query cache timeout in the backend if enabled. maxQueryCacheTimeout double default=10 + +#The configid to use to get other clusterspecific configs. +configid string default="" + +#The mbus route to the backing content cluster +storageRoute string default="" + +#Indexing mode for this cluster. This is a temporary workaround until this is correctly resolved per schema all over. +indexMode enum {INDEX, STREAMING, STORE_ONLY} default = INDEX diff --git a/container-search/src/test/java/com/yahoo/prelude/cluster/ClusterSearcherTestCase.java b/container-search/src/test/java/com/yahoo/prelude/cluster/ClusterSearcherTestCase.java index 4adbce3add9..1668edd081f 100644 --- a/container-search/src/test/java/com/yahoo/prelude/cluster/ClusterSearcherTestCase.java +++ b/container-search/src/test/java/com/yahoo/prelude/cluster/ClusterSearcherTestCase.java @@ -488,7 +488,6 @@ public class ClusterSearcherTestCase { return new ClusterSearcher(new ComponentId("test-id"), new InThreadExecutorService(), - qrSearchersConfig.build(), clusterConfig.build(), documentDbConfig.build(), new SchemaInfo(List.of(schema.build()), List.of()), diff --git a/container-search/src/test/java/com/yahoo/prelude/searcher/test/ValidateSortingSearcherTestCase.java b/container-search/src/test/java/com/yahoo/prelude/searcher/test/ValidateSortingSearcherTestCase.java index 7b0e1867650..b889119171e 100644 --- a/container-search/src/test/java/com/yahoo/prelude/searcher/test/ValidateSortingSearcherTestCase.java +++ b/container-search/src/test/java/com/yahoo/prelude/searcher/test/ValidateSortingSearcherTestCase.java @@ -3,7 +3,6 @@ package com.yahoo.prelude.searcher.test; import com.yahoo.component.chain.Chain; import com.yahoo.config.subscription.ConfigGetter; -import com.yahoo.container.QrSearchersConfig; import com.yahoo.prelude.searcher.ValidateSortingSearcher; import com.yahoo.search.Query; import com.yahoo.search.Result; @@ -30,14 +29,10 @@ public class ValidateSortingSearcherTestCase { @SuppressWarnings("deprecation") public ValidateSortingSearcherTestCase() { - QrSearchersConfig.Builder qrsCfg = new QrSearchersConfig.Builder(); - qrsCfg.searchcluster(new QrSearchersConfig.Searchcluster.Builder().name("giraffes")); - ClusterConfig.Builder clusterCfg = new ClusterConfig.Builder(). - clusterId(0). - clusterName("test"); + ClusterConfig.Builder clusterCfg = new ClusterConfig.Builder() + .clusterName("giraffes"); String attributesCfg = "file:src/test/java/com/yahoo/prelude/searcher/test/validate_sorting.cfg"; - searcher = new ValidateSortingSearcher(new QrSearchersConfig(qrsCfg), - new ClusterConfig(clusterCfg), + searcher = new ValidateSortingSearcher(new ClusterConfig(clusterCfg), ConfigGetter.getConfig(AttributesConfig.class, attributesCfg)); } @@ -82,7 +77,6 @@ public class ValidateSortingSearcherTestCase { return transform(QueryTestCase.httpEncode(sorting), null); } - @SuppressWarnings("deprecation") private String transform(String sorting, String language) { String q = "/?query=a"; if (sorting != null) { diff --git a/container-search/src/test/java/com/yahoo/search/grouping/GroupingValidatorTestCase.java b/container-search/src/test/java/com/yahoo/search/grouping/GroupingValidatorTestCase.java index fbab022c084..edce8112f21 100644 --- a/container-search/src/test/java/com/yahoo/search/grouping/GroupingValidatorTestCase.java +++ b/container-search/src/test/java/com/yahoo/search/grouping/GroupingValidatorTestCase.java @@ -2,7 +2,6 @@ package com.yahoo.search.grouping; import com.yahoo.vespa.config.search.AttributesConfig; -import com.yahoo.container.QrSearchersConfig; import com.yahoo.search.Query; import com.yahoo.search.config.ClusterConfig; import com.yahoo.search.grouping.request.GroupingOperation; @@ -191,17 +190,11 @@ public class GroupingValidatorTestCase { } private static void validateGrouping(String clusterName, AttributesConfig attributesConfig, Query query) { - QrSearchersConfig.Builder qrsConfig = new QrSearchersConfig.Builder().searchcluster( - new QrSearchersConfig.Searchcluster.Builder() - .indexingmode(QrSearchersConfig.Searchcluster.Indexingmode.Enum.REALTIME) - .name(clusterName)); - ClusterConfig.Builder clusterConfig = new ClusterConfig.Builder(). - clusterId(0). - clusterName("test"); - new Execution( - new GroupingValidator(new QrSearchersConfig(qrsConfig), - new ClusterConfig(clusterConfig), - attributesConfig), - Execution.Context.createContextStub()).search(query); + ClusterConfig.Builder clusterConfig = new ClusterConfig.Builder() + .clusterName(clusterName) + .indexMode(ClusterConfig.IndexMode.Enum.INDEX); + new Execution(new GroupingValidator(clusterConfig.build(), attributesConfig), + Execution.Context.createContextStub()) + .search(query); } } -- cgit v1.2.3