diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2022-05-05 08:38:23 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-05-05 08:38:23 +0200 |
commit | 114ab74d2255412148fd64f670c90af0f159383b (patch) | |
tree | 740da2b747e797f1473d01192fdfc663d91481b6 /config-model/src/main/java/com/yahoo | |
parent | 96f6a5a2deffa666b7e09b1eff6dc54677030d02 (diff) | |
parent | 4777d057261e82daac229202df52bc02dd84f03b (diff) |
Merge pull request #22395 from vespa-engine/bratseth/schema-info-3
Simplify
Diffstat (limited to 'config-model/src/main/java/com/yahoo')
6 files changed, 75 insertions, 99 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/StreamingValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/StreamingValidator.java index 438b28948c6..868da8efb14 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/StreamingValidator.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/StreamingValidator.java @@ -11,6 +11,7 @@ import com.yahoo.searchdefinition.document.ImmutableSDField; import com.yahoo.searchdefinition.document.MatchType; import com.yahoo.vespa.model.VespaModel; import com.yahoo.vespa.model.search.SearchCluster; +import com.yahoo.vespa.model.search.StreamingSearchCluster; import java.util.List; import java.util.logging.Level; @@ -25,21 +26,21 @@ public class StreamingValidator extends Validator { List<SearchCluster> searchClusters = model.getSearchClusters(); for (SearchCluster cluster : searchClusters) { if ( ! cluster.isStreaming()) continue; - warnStreamingAttributes(cluster, deployState.getDeployLogger()); - warnStreamingGramMatching(cluster, deployState.getDeployLogger()); - failStreamingDocumentReferences(cluster); + + var streamingCluster = (StreamingSearchCluster)cluster; + warnStreamingAttributes(streamingCluster, deployState.getDeployLogger()); + warnStreamingGramMatching(streamingCluster, deployState.getDeployLogger()); + failStreamingDocumentReferences(streamingCluster); } } - private static void warnStreamingGramMatching(SearchCluster sc, DeployLogger logger) { - if (sc.getSchemaConfig() != null) { - for (ImmutableSDField sd : sc.getSchemaConfig().getSchema().allConcreteFields()) { - if (sd.getMatching().getType() == MatchType.GRAM) { - logger.logApplicationPackage(Level.WARNING, "For streaming search cluster '" + - sc.getClusterName() + - "', SD field '" + sd.getName() + - "': n-gram matching is not supported for streaming search."); - } + private static void warnStreamingGramMatching(StreamingSearchCluster sc, DeployLogger logger) { + for (ImmutableSDField sd : sc.derived().getSchema().allConcreteFields()) { + if (sd.getMatching().getType() == MatchType.GRAM) { + logger.logApplicationPackage(Level.WARNING, "For streaming search cluster '" + + sc.getClusterName() + + "', SD field '" + sd.getName() + + "': n-gram matching is not supported for streaming search."); } } } @@ -50,17 +51,15 @@ public class StreamingValidator extends Validator { * @param sc a search cluster to be checked for attributes in streaming search * @param logger a DeployLogger */ - private static void warnStreamingAttributes(SearchCluster sc, DeployLogger logger) { - if (sc.getSchemaConfig() != null) { - for (ImmutableSDField sd : sc.getSchemaConfig().getSchema().allConcreteFields()) { - if (sd.doesAttributing()) { - warnStreamingAttribute(sc, sd, logger); - } + private static void warnStreamingAttributes(StreamingSearchCluster sc, DeployLogger logger) { + for (ImmutableSDField sd : sc.derived().getSchema().allConcreteFields()) { + if (sd.doesAttributing()) { + warnStreamingAttribute(sc, sd, logger); } } } - private static void warnStreamingAttribute(SearchCluster sc, ImmutableSDField sd, DeployLogger logger) { + private static void warnStreamingAttribute(StreamingSearchCluster sc, ImmutableSDField sd, DeployLogger logger) { // If the field is numeric, we can't print this, because we may have converted the field to // attribute indexing ourselves (IntegerIndex2Attribute) if (sd.getDataType() instanceof NumericDataType) return; @@ -69,8 +68,8 @@ public class StreamingValidator extends Validator { "': 'attribute' has same match semantics as 'index'."); } - private static void failStreamingDocumentReferences(SearchCluster sc) { - for (Attribute attribute : sc.getSchemaConfig().getAttributeFields().attributes()) { + private static void failStreamingDocumentReferences(StreamingSearchCluster sc) { + for (Attribute attribute : sc.derived().getAttributeFields().attributes()) { DataType dataType = attribute.getDataType(); if (dataType instanceof NewDocumentReferenceDataType) { String errorMessage = String.format("For streaming search cluster '%s': Attribute '%s' has type '%s'. " + 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 2820d0984db..72dd0c9c15b 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 @@ -64,11 +64,11 @@ public class StreamingSearchClusterChangeValidator implements ChangeValidator { getDocumentType(currentCluster, currentStreamingCluster), getDocumentType(nextCluster, nextStreamingCluster), overrides, now)); result.addAll(validateAttributeFastAccessAdded(currentCluster.id(), - currentStreamingCluster.getSchemaConfig().getAttributeFields(), - nextStreamingCluster.getSchemaConfig().getAttributeFields())); + currentStreamingCluster.derived().getAttributeFields(), + nextStreamingCluster.derived().getAttributeFields())); result.addAll(validateAttributeFastAccessRemoved(currentCluster.id(), - currentStreamingCluster.getSchemaConfig().getAttributeFields(), - nextStreamingCluster.getSchemaConfig().getAttributeFields())); + currentStreamingCluster.derived().getAttributeFields(), + nextStreamingCluster.derived().getAttributeFields())); return modifyActions(result, getSearchNodeServices(nextCluster), nextStreamingCluster.getDocTypeName()); } 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 82321216519..122afac58c5 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 @@ -329,7 +329,7 @@ public class ContentSearchCluster extends AbstractConfigProducer<SearchCluster> return getClusters().values().stream() .filter(StreamingSearchCluster.class::isInstance) .map(StreamingSearchCluster.class::cast) - .filter(ssc -> ssc.getSchemaConfig().getSchema().getName().equals(docType)) + .filter(ssc -> ssc.schemas().get(docType) != null) .findFirst(); } 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 d5bf12df559..cb9d330829e 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 @@ -228,9 +228,6 @@ public class IndexedSearchCluster extends SearchCluster } @Override - public DerivedConfiguration getSchemaConfig() { return null; } - - @Override public void getConfig(IndexInfoConfig.Builder builder) { documentDbsConfigProducer.getConfig(builder); } @@ -245,12 +242,10 @@ public class IndexedSearchCluster extends SearchCluster documentDbsConfigProducer.getConfig(builder); } - @Override public void getConfig(AttributesConfig.Builder builder) { documentDbsConfigProducer.getConfig(builder); } - @Override public void getConfig(RankProfilesConfig.Builder builder) { documentDbsConfigProducer.getConfig(builder); } 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 d7ce64d1d32..8a0b3ccc09b 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 @@ -3,19 +3,15 @@ package com.yahoo.vespa.model.search; import com.yahoo.config.model.deploy.DeployState; import com.yahoo.search.config.SchemaInfoConfig; -import com.yahoo.searchdefinition.RankProfile; import com.yahoo.searchdefinition.derived.SchemaInfo; import com.yahoo.searchdefinition.derived.SummaryMap; -import com.yahoo.searchlib.rankingexpression.Reference; -import com.yahoo.tensor.TensorType; +import com.yahoo.vespa.config.search.AttributesConfig; import com.yahoo.vespa.config.search.RankProfilesConfig; import com.yahoo.vespa.config.search.SummaryConfig; import com.yahoo.prelude.fastsearch.DocumentdbInfoConfig; import com.yahoo.vespa.config.search.SummarymapConfig; import com.yahoo.search.config.IndexInfoConfig; -import com.yahoo.vespa.config.search.AttributesConfig; import com.yahoo.vespa.configdefinition.IlscriptsConfig; -import com.yahoo.searchdefinition.derived.DerivedConfiguration; import com.yahoo.config.model.producer.AbstractConfigProducer; import java.util.Collections; @@ -150,35 +146,10 @@ public abstract class SearchCluster extends AbstractConfigProducer<SearchCluster public final int getClusterIndex() { return index; } public abstract void defaultDocumentsConfig(); - public abstract DerivedConfiguration getSchemaConfig(); - - // TODO: The get methods below should be moved to StreamingSearchCluster - - @Override - public void getConfig(IndexInfoConfig.Builder builder) { - if (getSchemaConfig() != null) getSchemaConfig().getIndexInfo().getConfig(builder); - } - - @Override - public void getConfig(SchemaInfoConfig.Builder builder) { - if (getSchemaConfig() != null) getSchemaConfig().getSchemaInfo().getConfig(builder); - } - - @Override - public void getConfig(IlscriptsConfig.Builder builder) { - if (getSchemaConfig() != null) getSchemaConfig().getIndexingScript().getConfig(builder); - } - public void getConfig(AttributesConfig.Builder builder) { - if (getSchemaConfig() != null) getSchemaConfig().getConfig(builder); - } - - public void getConfig(RankProfilesConfig.Builder builder) { - if (getSchemaConfig() != null) getSchemaConfig().getRankProfileList().getConfig(builder); - } + public abstract void getConfig(AttributesConfig.Builder builder); - @Override - public abstract void getConfig(DocumentdbInfoConfig.Builder builder); + public abstract void getConfig(RankProfilesConfig.Builder builder); @Override public String toString() { return "search-capable cluster '" + clusterName + "'"; } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/search/StreamingSearchCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/search/StreamingSearchCluster.java index df266ab77dd..7cd57e704c1 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/search/StreamingSearchCluster.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/search/StreamingSearchCluster.java @@ -4,6 +4,8 @@ package com.yahoo.vespa.model.search; import com.yahoo.config.model.deploy.DeployState; import com.yahoo.config.model.producer.AbstractConfigProducer; import com.yahoo.prelude.fastsearch.DocumentdbInfoConfig; +import com.yahoo.search.config.IndexInfoConfig; +import com.yahoo.search.config.SchemaInfoConfig; import com.yahoo.searchdefinition.Schema; import com.yahoo.searchdefinition.derived.AttributeFields; import com.yahoo.searchdefinition.derived.DerivedConfiguration; @@ -13,6 +15,7 @@ import com.yahoo.vespa.config.search.SummaryConfig; import com.yahoo.vespa.config.search.SummarymapConfig; import com.yahoo.vespa.config.search.vsm.VsmfieldsConfig; import com.yahoo.vespa.config.search.vsm.VsmsummaryConfig; +import com.yahoo.vespa.configdefinition.IlscriptsConfig; /** * A search cluster of type streaming. @@ -20,9 +23,8 @@ import com.yahoo.vespa.config.search.vsm.VsmsummaryConfig; * @author baldersheim * @author vegardh */ -public class StreamingSearchCluster extends SearchCluster implements - DocumentdbInfoConfig.Producer, - RankProfilesConfig.Producer, +public class StreamingSearchCluster extends SearchCluster implements + DocumentdbInfoConfig.Producer, VsmsummaryConfig.Producer, VsmfieldsConfig.Producer, SummarymapConfig.Producer, @@ -31,7 +33,7 @@ public class StreamingSearchCluster extends SearchCluster implements private final String storageRouteSpec; private final AttributesProducer attributesConfig; private final String docTypeName; - private DerivedConfiguration schemaConfig = null; + private DerivedConfiguration derivedConfig = null; public StreamingSearchCluster(AbstractConfigProducer<SearchCluster> parent, String clusterName, @@ -51,9 +53,9 @@ public class StreamingSearchCluster extends SearchCluster implements protected IndexingMode getIndexingMode() { return IndexingMode.STREAMING; } public final String getStorageRouteSpec() { return storageRouteSpec; } - public String getDocTypeName() { - return docTypeName; - } + public String getDocTypeName() { return docTypeName; } + + public DerivedConfiguration derived() { return derivedConfig; } @Override public int getRowBits() { return 0; } @@ -61,10 +63,10 @@ public class StreamingSearchCluster extends SearchCluster implements @Override public void getConfig(DocumentdbInfoConfig.Builder builder) { DocumentdbInfoConfig.Documentdb.Builder docDb = new DocumentdbInfoConfig.Documentdb.Builder(); - docDb.name(schemaConfig.getSchema().getName()); - SummaryConfig.Producer prod = schemaConfig.getSummaries(); + docDb.name(derivedConfig.getSchema().getName()); + SummaryConfig.Producer prod = derivedConfig.getSummaries(); convertSummaryConfig(prod, null, docDb); - addRankProfilesConfig(schemaConfig.getSchema().getName(), docDb); + addRankProfilesConfig(derivedConfig.getSchema().getName(), docDb); builder.documentdb(docDb); } @@ -77,52 +79,63 @@ public class StreamingSearchCluster extends SearchCluster implements if ( ! schema.getName().equals(docTypeName)) throw new IllegalArgumentException("Document type name '" + docTypeName + "' must be the same as the schema name '" + schema.getName() + "'"); - this.schemaConfig = new DerivedConfiguration(schema, - deployState.getDeployLogger(), - deployState.getProperties(), - deployState.rankProfileRegistry(), - deployState.getQueryProfiles().getRegistry(), - deployState.getImportedModels(), - deployState.getExecutor()); + this.derivedConfig = new DerivedConfiguration(schema, + deployState.getDeployLogger(), + deployState.getProperties(), + deployState.rankProfileRegistry(), + deployState.getQueryProfiles().getRegistry(), + deployState.getImportedModels(), + deployState.getExecutor()); } @Override - public DerivedConfiguration getSchemaConfig() { return schemaConfig; } + public void defaultDocumentsConfig() { } @Override - public void defaultDocumentsConfig() { } + public void getConfig(IndexInfoConfig.Builder builder) { + derivedConfig.getIndexInfo().getConfig(builder); + } + + @Override + public void getConfig(SchemaInfoConfig.Builder builder) { + derivedConfig.getSchemaInfo().getConfig(builder); + } @Override + public void getConfig(IlscriptsConfig.Builder builder) { + derivedConfig.getIndexingScript().getConfig(builder); + } + public void getConfig(AttributesConfig.Builder builder) { - if (getSchemaConfig() != null) getSchemaConfig().getConfig(builder); + derivedConfig.getConfig(builder); } - + + public void getConfig(RankProfilesConfig.Builder builder) { + derivedConfig.getRankProfileList().getConfig(builder); + } + @Override public void getConfig(VsmsummaryConfig.Builder builder) { - if (getSchemaConfig() != null) - if (getSchemaConfig().getVsmSummary() != null) - getSchemaConfig().getVsmSummary().getConfig(builder); + if (derivedConfig.getVsmSummary() != null) + derivedConfig.getVsmSummary().getConfig(builder); } @Override public void getConfig(VsmfieldsConfig.Builder builder) { - if (getSchemaConfig() != null) - if (getSchemaConfig().getVsmFields() != null) - getSchemaConfig().getVsmFields().getConfig(builder); + if (derivedConfig.getVsmFields() != null) + derivedConfig.getVsmFields().getConfig(builder); } @Override public void getConfig(SummarymapConfig.Builder builder) { - if (getSchemaConfig() != null) - if (getSchemaConfig().getSummaryMap() != null) - getSchemaConfig().getSummaryMap().getConfig(builder); + if (derivedConfig.getSummaryMap() != null) + derivedConfig.getSummaryMap().getConfig(builder); } @Override public void getConfig(SummaryConfig.Builder builder) { - if (getSchemaConfig() != null) - if (getSchemaConfig().getSummaries() != null) - getSchemaConfig().getSummaries().getConfig(builder); + if (derivedConfig.getSummaries() != null) + derivedConfig.getSummaries().getConfig(builder); } private class AttributesProducer extends AbstractConfigProducer<AttributesProducer> implements AttributesConfig.Producer { @@ -133,9 +146,7 @@ public class StreamingSearchCluster extends SearchCluster implements @Override public void getConfig(AttributesConfig.Builder builder) { - if (getSchemaConfig() != null) { - getSchemaConfig().getConfig(builder, AttributeFields.FieldSet.FAST_ACCESS); - } + derivedConfig.getConfig(builder, AttributeFields.FieldSet.FAST_ACCESS); } } |