summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@gmail.com>2022-05-05 10:20:47 +0200
committerGitHub <noreply@github.com>2022-05-05 10:20:47 +0200
commita6f4bcefc08cb924b179cc1eadd9b2f95f2ffab1 (patch)
treea8c34b5713347dd76695725a106b499562a809b2
parent6ea99ad087e66a5fe051ce5cde3aee55a1c44617 (diff)
parent66c06751d6aae347ce3bd2949ef83b1b8ce93054 (diff)
Merge pull request #22459 from vespa-engine/revert-22395-bratseth/schema-info-3
Revert "Simplify" MERGEOK
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/StreamingValidator.java41
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/StreamingSearchClusterChangeValidator.java8
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/ContentSearchCluster.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/search/IndexedSearchCluster.java5
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/search/SearchCluster.java35
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/search/StreamingSearchCluster.java83
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/search/searchchain/MockSearchClusters.java16
7 files changed, 106 insertions, 84 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 868da8efb14..438b28948c6 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,7 +11,6 @@ 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;
@@ -26,21 +25,21 @@ public class StreamingValidator extends Validator {
List<SearchCluster> searchClusters = model.getSearchClusters();
for (SearchCluster cluster : searchClusters) {
if ( ! cluster.isStreaming()) continue;
-
- var streamingCluster = (StreamingSearchCluster)cluster;
- warnStreamingAttributes(streamingCluster, deployState.getDeployLogger());
- warnStreamingGramMatching(streamingCluster, deployState.getDeployLogger());
- failStreamingDocumentReferences(streamingCluster);
+ warnStreamingAttributes(cluster, deployState.getDeployLogger());
+ warnStreamingGramMatching(cluster, deployState.getDeployLogger());
+ failStreamingDocumentReferences(cluster);
}
}
- 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.");
+ 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.");
+ }
}
}
}
@@ -51,15 +50,17 @@ 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(StreamingSearchCluster sc, DeployLogger logger) {
- for (ImmutableSDField sd : sc.derived().getSchema().allConcreteFields()) {
- if (sd.doesAttributing()) {
- warnStreamingAttribute(sc, sd, logger);
+ 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 warnStreamingAttribute(StreamingSearchCluster sc, ImmutableSDField sd, DeployLogger logger) {
+ private static void warnStreamingAttribute(SearchCluster 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;
@@ -68,8 +69,8 @@ public class StreamingValidator extends Validator {
"': 'attribute' has same match semantics as 'index'.");
}
- private static void failStreamingDocumentReferences(StreamingSearchCluster sc) {
- for (Attribute attribute : sc.derived().getAttributeFields().attributes()) {
+ private static void failStreamingDocumentReferences(SearchCluster sc) {
+ for (Attribute attribute : sc.getSchemaConfig().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 72dd0c9c15b..2820d0984db 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.derived().getAttributeFields(),
- nextStreamingCluster.derived().getAttributeFields()));
+ currentStreamingCluster.getSchemaConfig().getAttributeFields(),
+ nextStreamingCluster.getSchemaConfig().getAttributeFields()));
result.addAll(validateAttributeFastAccessRemoved(currentCluster.id(),
- currentStreamingCluster.derived().getAttributeFields(),
- nextStreamingCluster.derived().getAttributeFields()));
+ currentStreamingCluster.getSchemaConfig().getAttributeFields(),
+ nextStreamingCluster.getSchemaConfig().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 122afac58c5..82321216519 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.schemas().get(docType) != null)
+ .filter(ssc -> ssc.getSchemaConfig().getSchema().getName().equals(docType))
.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 cb9d330829e..d5bf12df559 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,6 +228,9 @@ public class IndexedSearchCluster extends SearchCluster
}
@Override
+ public DerivedConfiguration getSchemaConfig() { return null; }
+
+ @Override
public void getConfig(IndexInfoConfig.Builder builder) {
documentDbsConfigProducer.getConfig(builder);
}
@@ -242,10 +245,12 @@ 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 8a0b3ccc09b..d7ce64d1d32 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,15 +3,19 @@ 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.vespa.config.search.AttributesConfig;
+import com.yahoo.searchlib.rankingexpression.Reference;
+import com.yahoo.tensor.TensorType;
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;
@@ -146,10 +150,35 @@ 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 abstract void getConfig(AttributesConfig.Builder 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(RankProfilesConfig.Builder builder);
+ @Override
+ public abstract void getConfig(DocumentdbInfoConfig.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 7cd57e704c1..df266ab77dd 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,8 +4,6 @@ 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;
@@ -15,7 +13,6 @@ 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.
@@ -23,8 +20,9 @@ import com.yahoo.vespa.configdefinition.IlscriptsConfig;
* @author baldersheim
* @author vegardh
*/
-public class StreamingSearchCluster extends SearchCluster implements
- DocumentdbInfoConfig.Producer,
+public class StreamingSearchCluster extends SearchCluster implements
+ DocumentdbInfoConfig.Producer,
+ RankProfilesConfig.Producer,
VsmsummaryConfig.Producer,
VsmfieldsConfig.Producer,
SummarymapConfig.Producer,
@@ -33,7 +31,7 @@ public class StreamingSearchCluster extends SearchCluster implements
private final String storageRouteSpec;
private final AttributesProducer attributesConfig;
private final String docTypeName;
- private DerivedConfiguration derivedConfig = null;
+ private DerivedConfiguration schemaConfig = null;
public StreamingSearchCluster(AbstractConfigProducer<SearchCluster> parent,
String clusterName,
@@ -53,9 +51,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 DerivedConfiguration derived() { return derivedConfig; }
+ public String getDocTypeName() {
+ return docTypeName;
+ }
@Override
public int getRowBits() { return 0; }
@@ -63,10 +61,10 @@ public class StreamingSearchCluster extends SearchCluster implements
@Override
public void getConfig(DocumentdbInfoConfig.Builder builder) {
DocumentdbInfoConfig.Documentdb.Builder docDb = new DocumentdbInfoConfig.Documentdb.Builder();
- docDb.name(derivedConfig.getSchema().getName());
- SummaryConfig.Producer prod = derivedConfig.getSummaries();
+ docDb.name(schemaConfig.getSchema().getName());
+ SummaryConfig.Producer prod = schemaConfig.getSummaries();
convertSummaryConfig(prod, null, docDb);
- addRankProfilesConfig(derivedConfig.getSchema().getName(), docDb);
+ addRankProfilesConfig(schemaConfig.getSchema().getName(), docDb);
builder.documentdb(docDb);
}
@@ -79,63 +77,52 @@ 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.derivedConfig = new DerivedConfiguration(schema,
- deployState.getDeployLogger(),
- deployState.getProperties(),
- deployState.rankProfileRegistry(),
- deployState.getQueryProfiles().getRegistry(),
- deployState.getImportedModels(),
- deployState.getExecutor());
+ this.schemaConfig = new DerivedConfiguration(schema,
+ deployState.getDeployLogger(),
+ deployState.getProperties(),
+ deployState.rankProfileRegistry(),
+ deployState.getQueryProfiles().getRegistry(),
+ deployState.getImportedModels(),
+ deployState.getExecutor());
}
@Override
- public void defaultDocumentsConfig() { }
+ public DerivedConfiguration getSchemaConfig() { return schemaConfig; }
@Override
- public void getConfig(IndexInfoConfig.Builder builder) {
- derivedConfig.getIndexInfo().getConfig(builder);
- }
-
- @Override
- public void getConfig(SchemaInfoConfig.Builder builder) {
- derivedConfig.getSchemaInfo().getConfig(builder);
- }
+ public void defaultDocumentsConfig() { }
@Override
- public void getConfig(IlscriptsConfig.Builder builder) {
- derivedConfig.getIndexingScript().getConfig(builder);
- }
-
public void getConfig(AttributesConfig.Builder builder) {
- derivedConfig.getConfig(builder);
+ if (getSchemaConfig() != null) getSchemaConfig().getConfig(builder);
}
-
- public void getConfig(RankProfilesConfig.Builder builder) {
- derivedConfig.getRankProfileList().getConfig(builder);
- }
-
+
@Override
public void getConfig(VsmsummaryConfig.Builder builder) {
- if (derivedConfig.getVsmSummary() != null)
- derivedConfig.getVsmSummary().getConfig(builder);
+ if (getSchemaConfig() != null)
+ if (getSchemaConfig().getVsmSummary() != null)
+ getSchemaConfig().getVsmSummary().getConfig(builder);
}
@Override
public void getConfig(VsmfieldsConfig.Builder builder) {
- if (derivedConfig.getVsmFields() != null)
- derivedConfig.getVsmFields().getConfig(builder);
+ if (getSchemaConfig() != null)
+ if (getSchemaConfig().getVsmFields() != null)
+ getSchemaConfig().getVsmFields().getConfig(builder);
}
@Override
public void getConfig(SummarymapConfig.Builder builder) {
- if (derivedConfig.getSummaryMap() != null)
- derivedConfig.getSummaryMap().getConfig(builder);
+ if (getSchemaConfig() != null)
+ if (getSchemaConfig().getSummaryMap() != null)
+ getSchemaConfig().getSummaryMap().getConfig(builder);
}
@Override
public void getConfig(SummaryConfig.Builder builder) {
- if (derivedConfig.getSummaries() != null)
- derivedConfig.getSummaries().getConfig(builder);
+ if (getSchemaConfig() != null)
+ if (getSchemaConfig().getSummaries() != null)
+ getSchemaConfig().getSummaries().getConfig(builder);
}
private class AttributesProducer extends AbstractConfigProducer<AttributesProducer> implements AttributesConfig.Producer {
@@ -146,7 +133,9 @@ public class StreamingSearchCluster extends SearchCluster implements
@Override
public void getConfig(AttributesConfig.Builder builder) {
- derivedConfig.getConfig(builder, AttributeFields.FieldSet.FAST_ACCESS);
+ if (getSchemaConfig() != null) {
+ getSchemaConfig().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 7010027eb17..977c10d0828 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,6 @@
package com.yahoo.vespa.model.container.search.searchchain;
import com.yahoo.config.model.deploy.DeployState;
-import com.yahoo.search.config.SchemaInfoConfig;
import com.yahoo.searchdefinition.derived.DerivedConfiguration;
import com.yahoo.vespa.config.search.AttributesConfig;
import com.yahoo.vespa.config.search.RankProfilesConfig;
@@ -34,19 +33,17 @@ public class MockSearchClusters {
}
@Override
- public void defaultDocumentsConfig() {}
+ protected SearchCluster.IndexingMode getIndexingMode() { return streaming ? SearchCluster.IndexingMode.STREAMING : SearchCluster.IndexingMode.REALTIME; }
@Override
- public void getConfig(AttributesConfig.Builder builder) {
+ public void getConfig(DocumentdbInfoConfig.Builder builder) {
}
@Override
- public void getConfig(DocumentdbInfoConfig.Builder builder) {
- }
+ public void defaultDocumentsConfig() {}
@Override
- public void getConfig(RankProfilesConfig.Builder builder) {
- }
+ public DerivedConfiguration getSchemaConfig() { return null; }
@Override
public void getConfig(IndexInfoConfig.Builder builder) {
@@ -57,11 +54,12 @@ public class MockSearchClusters {
}
@Override
- public void getConfig(SchemaInfoConfig.Builder builder) {
+ public void getConfig(AttributesConfig.Builder builder) {
}
@Override
- protected SearchCluster.IndexingMode getIndexingMode() { return streaming ? SearchCluster.IndexingMode.STREAMING : SearchCluster.IndexingMode.REALTIME; }
+ public void getConfig(RankProfilesConfig.Builder builder) {
+ }
}