aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2024-03-18 17:19:38 +0100
committerGitHub <noreply@github.com>2024-03-18 17:19:38 +0100
commitdd8ebed8c817e3ce39676cc41008dbe6131c29df (patch)
tree6450b30006ccc13d30b6db05b1c14c0b416a62a1
parent3e1f91d50f016ce573cee3223e639dc689f9b4de (diff)
parentebfc7be5f5b6383e02c142b7e38bc4cc57b26324 (diff)
Merge pull request #30651 from vespa-engine/balder/rename-some-searchcluster-related-terms
Balder/rename some searchcluster related terms
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/VespaModel.java5
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/IndexedSearchClusterChangeValidator.java18
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/StreamingSearchClusterChangeValidator.java6
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/search/searchchain/LocalProvider.java17
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/Content.java5
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/ContentSearchCluster.java72
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/cluster/ContentCluster.java23
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/search/IndexedSearchCluster.java4
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/search/SearchCluster.java25
-rw-r--r--config-model/src/test/java/com/yahoo/config/model/provision/ModelProvisioningTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/search/ContentClusterFixture.java4
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/ContentBuilderTest.java113
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/content/IndexedTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/content/cluster/ClusterTest.java2
-rw-r--r--container-core/src/main/resources/configdefinitions/container.qr-searchers.def4
-rw-r--r--container-search/abi-spec.json2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/cluster/ClusterSearcher.java30
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/searcher/ValidateSortingSearcher.java21
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/GroupingValidator.java12
-rw-r--r--container-search/src/main/java/com/yahoo/search/searchers/ValidateMatchPhaseSearcher.java1
-rw-r--r--container-search/src/main/resources/configdefinitions/search.config.cluster.def15
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/cluster/ClusterSearcherTestCase.java1
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/searcher/test/ValidateSortingSearcherTestCase.java12
-rw-r--r--container-search/src/test/java/com/yahoo/search/grouping/GroupingValidatorTestCase.java19
24 files changed, 184 insertions, 231 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<String> typesWithIndexedFields = content.getSearch().getIndexed() == null
+ Set<String> 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<String, ContentCluster> 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<ConfigChangeAction> 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<DocumentDatabase> getDocumentDbs(ContentSearchCluster cluster) {
- if (cluster.getIndexed() != null) {
- return cluster.getIndexed().getDocumentDbs();
+ private static List<DocumentDatabase> getDocumentDbs(SearchCluster cluster) {
+ if (cluster != null) {
+ return cluster.getDocumentDbs();
}
- return new ArrayList<>();
+ return List.of();
}
private static List<ServiceInfo> 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/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/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<SearchCluster> getSearchClusters(ConfigModelRepo pc) {
List<SearchCluster> 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<AnyConfigProducer>
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<String, SearchCluster> 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<AnyConfigProducer>
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<AnyConfigProducer>
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<ModelElement> documentDefs) {
+ private void addSearchCluster(DeployState deployState, IndexedSearchCluster cluster, Double queryTimeout, List<ModelElement> documentDefs) {
addSchemas(deployState, documentDefs, cluster);
if (queryTimeout != null) {
@@ -206,17 +202,11 @@ public class ContentSearchCluster extends TreeConfigProducer<AnyConfigProducer>
}
}
- 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<AnyConfigProducer>
* 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<SearchNode> getSearchNodes() {
- return hasIndexedCluster() ? getIndexed().getSearchNodes() : nonIndexed;
+ return (searchCluster != null) ? searchCluster.getSearchNodes() : nonIndexed;
}
public void addSearchNode(DeployState deployState, ContentNode node, StorageGroup parentGroup, ModelElement element) {
- TreeConfigProducer<AnyConfigProducer> parent = hasIndexedCluster() ? getIndexed() : this;
+ TreeConfigProducer<AnyConfigProducer> parent = (searchCluster != null) ? searchCluster : this;
NodeSpec spec = getNextSearchNodeSpec(parentGroup);
SearchNode searchNode;
@@ -267,8 +257,8 @@ public class ContentSearchCluster extends TreeConfigProducer<AnyConfigProducer>
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<AnyConfigProducer>
}
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<AnyConfigProducer>
}
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<AnyConfigProducer>
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<AnyConfigProducer>
@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<AnyConfigProducer> 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<AnyConfigProducer> 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<AnyConfigProducer> 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/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<AnyConfigProducer
new Join(documentDbs.values()).getConfig(builder);
}
+ public void getConfig(ClusterConfig.Builder builder) {
+ builder.clusterId(getClusterIndex());
+ builder.clusterName(getClusterName());
+ builder.storageRoute(getClusterName());
+ builder.configid(getConfigId());
+ if (visibilityDelay != null) {
+ builder.cacheTimeout(convertVisibilityDelay(visibilityDelay));
+ }
+ if (hasStreaming()) {
+ builder.indexMode(ClusterConfig.IndexMode.Enum.STREAMING);
+ } else {
+ builder.indexMode(ClusterConfig.IndexMode.Enum.INDEX);
+ }
+ }
+
+ // 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;
+ }
+
@Override
public String toString() { return "search-capable cluster '" + clusterName + "'"; }
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 {
"</content>");
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 {
"</content>");
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 {
"</content>");
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 {
"</content>");
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("<node hostalias='mockhost' distribution-key='0'/>" +
"<node hostalias='mockhost' distribution-key='1'/>");
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 {
" </group>" +
"</content>");
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 {
" </group>" +
"</content>", 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 {
" </group>" +
"</content>");
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 {
" </group>" +
"</content>");
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 {
" </group>" +
"</content>");
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 {
" </group>" +
"</content>");
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 {
" </group>" +
"</content>");
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(
- " <content version='1.0' id='storage'>\n" +
- " <redundancy>3</redundancy>\n" +
- " <documents>" +
- " <document type='music' mode='index'/>" +
- " </documents>" +
- " <group>\n" +
- " <node hostalias='mockhost' distribution-key='0' />\n" +
- " </group>\n" +
- " <engine>\n" +
- " <dummy/>\n" +
- " </engine>\n" +
- " </content>\n");
+ """
+ <content version='1.0' id='storage'>
+ <redundancy>3</redundancy>
+ <documents> <document type='music' mode='index'/> </documents> <group>
+ <node hostalias='mockhost' distribution-key='0' />
+ </group>
+ <engine>
+ <dummy/>
+ </engine>
+ </content>
+ """);
fail();
} catch (Exception e) {
@@ -695,8 +694,8 @@ public class ContentBuilderTest extends DomBuilderTest {
" </group>" +
"</content>");
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 {
" <query-timeout>1.1</query-timeout>",
" <visibility-delay>2.3</visibility-delay>",
"</search>"));
- SearchCluster searchCluster = cluster.getSearch().getIndexed();
+ SearchCluster searchCluster = cluster.getSearch().getSearchCluster();
assertNotNull(searchCluster);
assertEquals(1.1, searchCluster.getQueryTimeout(), DELTA);
assertEquals(2.3, searchCluster.getVisibilityDelay(), DELTA);
diff --git a/container-core/src/main/resources/configdefinitions/container.qr-searchers.def b/container-core/src/main/resources/configdefinitions/container.qr-searchers.def
index ac0c0dd6ada..7cda25a21d8 100644
--- a/container-core/src/main/resources/configdefinitions/container.qr-searchers.def
+++ b/container-core/src/main/resources/configdefinitions/container.qr-searchers.def
@@ -23,10 +23,6 @@ com.yahoo.prelude.searcher.JuniperSearcher.defaultdoctype string default=""
com.yahoo.prelude.searcher.XMLStringSearcher.source string default=""
-## Default docsum class the QR server should ask the backend to
-## use for representing hints as default.
-com.yahoo.prelude.fastsearch.IndexedBackend.docsum.defaultclass string default=""
-
com.yahoo.prelude.querytransform.PhrasingSearcher.automatonfile string default=""
com.yahoo.prelude.querytransform.NonPhrasingSearcher.automatonfile string default=""
com.yahoo.prelude.querytransform.TermReplacingSearcher.termlist[] string
diff --git a/container-search/abi-spec.json b/container-search/abi-spec.json
index 73376ac4b25..18d1345cb06 100644
--- a/container-search/abi-spec.json
+++ b/container-search/abi-spec.json
@@ -2492,7 +2492,7 @@
"public"
],
"methods" : [
- "public void <init>(com.yahoo.container.QrSearchersConfig, com.yahoo.search.config.ClusterConfig, com.yahoo.vespa.config.search.AttributesConfig)",
+ "public void <init>(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<String, AttributesConfig.Attribute> 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);
}
}