From b4f0476cba4c6a53739e09ab6cd4feb1e71d8a4a Mon Sep 17 00:00:00 2001 From: Jon Bratseth Date: Tue, 31 May 2022 12:46:21 +0200 Subject: Revert "Revert "Simplify"" This reverts commit 66c06751d6aae347ce3bd2949ef83b1b8ce93054. --- .../application/validation/StreamingValidator.java | 41 ++++++------- .../StreamingSearchClusterChangeValidator.java | 8 +-- .../vespa/model/content/ContentSearchCluster.java | 2 +- .../vespa/model/search/IndexedSearchCluster.java | 5 -- .../yahoo/vespa/model/search/SearchCluster.java | 32 +--------- .../vespa/model/search/StreamingSearchCluster.java | 71 +++++++++++++--------- .../search/searchchain/MockSearchClusters.java | 17 +++--- 7 files changed, 78 insertions(+), 98 deletions(-) (limited to 'config-model') 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 458f8dfbd68..773d696f3e8 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.schema.document.ImmutableSDField; import com.yahoo.schema.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 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 0563aa02149..167aff1064b 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 4be5153293f..1ab5fd22648 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 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 d63ae451f39..9efe61d134f 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 @@ -221,9 +221,6 @@ public class IndexedSearchCluster extends SearchCluster } } - @Override - public DerivedConfiguration getSchemaConfig() { return null; } - @Override public void getConfig(IndexInfoConfig.Builder builder) { documentDbsConfigProducer.getConfig(builder); @@ -239,12 +236,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 d727e6d6395..f033399c787 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 @@ -5,14 +5,13 @@ import com.yahoo.config.model.deploy.DeployState; import com.yahoo.search.config.SchemaInfoConfig; import com.yahoo.schema.derived.SchemaInfo; import com.yahoo.schema.derived.SummaryMap; +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.schema.derived.DerivedConfiguration; import com.yahoo.config.model.producer.AbstractConfigProducer; import java.util.Collections; @@ -147,35 +146,10 @@ public abstract class SearchCluster extends AbstractConfigProducer 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,46 +79,57 @@ 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); + this.derivedConfig = new DerivedConfiguration(schema, deployState); } @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 implements AttributesConfig.Producer { @@ -127,9 +140,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); } } diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/search/searchchain/MockSearchClusters.java b/config-model/src/test/java/com/yahoo/vespa/model/container/search/searchchain/MockSearchClusters.java index 0d51e4b6e74..81c7b778ed3 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/container/search/searchchain/MockSearchClusters.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/container/search/searchchain/MockSearchClusters.java @@ -2,7 +2,7 @@ package com.yahoo.vespa.model.container.search.searchchain; import com.yahoo.config.model.deploy.DeployState; -import com.yahoo.schema.derived.DerivedConfiguration; +import com.yahoo.search.config.SchemaInfoConfig; import com.yahoo.vespa.config.search.AttributesConfig; import com.yahoo.vespa.config.search.RankProfilesConfig; import com.yahoo.config.model.producer.AbstractConfigProducerRoot; @@ -33,17 +33,19 @@ public class MockSearchClusters { } @Override - protected SearchCluster.IndexingMode getIndexingMode() { return streaming ? SearchCluster.IndexingMode.STREAMING : SearchCluster.IndexingMode.REALTIME; } + public void defaultDocumentsConfig() {} @Override - public void getConfig(DocumentdbInfoConfig.Builder builder) { + public void getConfig(AttributesConfig.Builder builder) { } @Override - public void defaultDocumentsConfig() {} + public void getConfig(DocumentdbInfoConfig.Builder builder) { + } @Override - public DerivedConfiguration getSchemaConfig() { return null; } + public void getConfig(RankProfilesConfig.Builder builder) { + } @Override public void getConfig(IndexInfoConfig.Builder builder) { @@ -54,12 +56,11 @@ public class MockSearchClusters { } @Override - public void getConfig(AttributesConfig.Builder builder) { + public void getConfig(SchemaInfoConfig.Builder builder) { } @Override - public void getConfig(RankProfilesConfig.Builder builder) { - } + protected SearchCluster.IndexingMode getIndexingMode() { return streaming ? SearchCluster.IndexingMode.STREAMING : SearchCluster.IndexingMode.REALTIME; } } -- cgit v1.2.3