aboutsummaryrefslogtreecommitdiffstats
path: root/config-model/src/main/java/com/yahoo/vespa/model/search/SearchCluster.java
diff options
context:
space:
mode:
Diffstat (limited to 'config-model/src/main/java/com/yahoo/vespa/model/search/SearchCluster.java')
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/search/SearchCluster.java116
1 files changed, 28 insertions, 88 deletions
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..fc4b96ec384 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,32 +3,18 @@ package com.yahoo.vespa.model.search;
import com.yahoo.config.ConfigInstance;
import com.yahoo.config.model.deploy.DeployState;
-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.SchemaInfoConfig;
import com.yahoo.schema.derived.SchemaInfo;
import com.yahoo.vespa.config.search.AttributesConfig;
import com.yahoo.prelude.fastsearch.DocumentdbInfoConfig;
import com.yahoo.search.config.IndexInfoConfig;
-import com.yahoo.vespa.config.search.RankProfilesConfig;
-import com.yahoo.vespa.config.search.SummaryConfig;
-import com.yahoo.vespa.config.search.core.OnnxModelsConfig;
import com.yahoo.vespa.config.search.core.ProtonConfig;
-import com.yahoo.vespa.config.search.core.RankingConstantsConfig;
-import com.yahoo.vespa.config.search.core.RankingExpressionsConfig;
-import com.yahoo.vespa.config.search.summary.JuniperrcConfig;
-import com.yahoo.vespa.config.search.vsm.VsmfieldsConfig;
-import com.yahoo.vespa.config.search.vsm.VsmsummaryConfig;
import com.yahoo.vespa.configdefinition.IlscriptsConfig;
import com.yahoo.config.model.producer.AnyConfigProducer;
import com.yahoo.config.model.producer.TreeConfigProducer;
-import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
-import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
@@ -50,50 +36,6 @@ public abstract class SearchCluster extends TreeConfigProducer<AnyConfigProducer
private Double visibilityDelay = 0.0;
private final Map<String, SchemaInfo> schemas = new LinkedHashMap<>();
private final Map<String, DocumentDatabase> documentDbs = new LinkedHashMap<>();
- private final Map<String, AttributesProducer> documentDBProducerForStreaming = new HashMap<>();
- private final List<LegacyStreamingProxy> legacyproxy = new ArrayList<>();
-
- private static class LegacyStreamingProxy extends TreeConfigProducer<AnyConfigProducer> implements
- AttributesConfig.Producer,
- RankProfilesConfig.Producer,
- RankingConstantsConfig.Producer,
- RankingExpressionsConfig.Producer,
- OnnxModelsConfig.Producer,
- JuniperrcConfig.Producer,
- SummaryConfig.Producer,
- VsmsummaryConfig.Producer,
- VsmfieldsConfig.Producer
- {
- private final DocumentDatabase db;
- LegacyStreamingProxy(TreeConfigProducer<AnyConfigProducer> parent, String clusterName,
- String schemaName, DerivedConfiguration derived) {
- super(parent, "cluster." + clusterName + "." + schemaName);
- this.db = new DocumentDatabase(this, schemaName, derived);
- }
- @Override public void getConfig(SummaryConfig.Builder builder) { db.getConfig(builder); }
- @Override public void getConfig(AttributesConfig.Builder builder) { db.getConfig(builder); }
- @Override public void getConfig(OnnxModelsConfig.Builder builder) { db.getConfig(builder); }
- @Override public void getConfig(RankingConstantsConfig.Builder builder) { db.getConfig(builder); }
- @Override public void getConfig(RankProfilesConfig.Builder builder) { db.getConfig(builder); }
- @Override public void getConfig(RankingExpressionsConfig.Builder builder) { db.getConfig(builder); }
- @Override public void getConfig(JuniperrcConfig.Builder builder) { db.getConfig(builder); }
- @Override public void getConfig(VsmfieldsConfig.Builder builder) { db.getConfig(builder); }
- @Override public void getConfig(VsmsummaryConfig.Builder builder) { db.getConfig(builder); }
- }
-
- private static class AttributesProducer extends AnyConfigProducer implements AttributesConfig.Producer {
- private final DerivedConfiguration derived;
-
- AttributesProducer(TreeConfigProducer<AnyConfigProducer> parent, String docType, DerivedConfiguration derived) {
- super(parent, docType);
- this.derived = derived;
- }
-
- @Override
- public void getConfig(AttributesConfig.Builder builder) {
- derived.getConfig(builder, AttributeFields.FieldSet.FAST_ACCESS);
- }
- }
public SearchCluster(TreeConfigProducer<?> parent, String clusterName, int index) {
super(parent, "cluster." + clusterName);
@@ -106,6 +48,9 @@ public abstract class SearchCluster extends TreeConfigProducer<AnyConfigProducer
public void add(SchemaInfo schema) {
schemas.put(schema.name(), schema);
}
+ public void add(DocumentDatabase db) {
+ documentDbs.put(db.getName(), db);
+ }
public boolean hasDocumentDB(String name) {
return documentDbs.containsKey(name);
@@ -127,19 +72,7 @@ public abstract class SearchCluster extends TreeConfigProducer<AnyConfigProducer
* Derives the schemas from the application package.
* Also stores the document names contained in the schemas.
*/
- public void deriveFromSchemas(DeployState deployState) {
- for (SchemaInfo spec : schemas().values()) {
- if (spec.fullSchema() instanceof DocumentOnlySchema) continue; // TODO verify if this special handling is necessary
- String schemaName = spec.fullSchema().getName();
- var derived = new DerivedConfiguration(deployState, spec.fullSchema(), spec.getIndexMode());
- documentDbs.put(schemaName, new DocumentDatabase(this, schemaName, derived));
- if (spec.getIndexMode() == SchemaInfo.IndexMode.STREAMING) {
- var parent = (TreeConfigProducer<AnyConfigProducer>)getParent();
- documentDBProducerForStreaming.put(schemaName, new AttributesProducer(parent, schemaName, derived));
- legacyproxy.add(new LegacyStreamingProxy(parent, clusterName, schemaName, derived));
- }
- }
- }
+ public abstract void deriveFromSchemas(DeployState deployState);
/** Returns the document databases contained in this cluster */
public List<DocumentDatabase> getDocumentDbs() {
@@ -147,6 +80,7 @@ public abstract class SearchCluster extends TreeConfigProducer<AnyConfigProducer
}
public String getClusterName() { return clusterName; }
+ public final String getIndexingModeName() { return getIndexingMode().getName(); }
public final boolean hasStreaming() {
return schemas().values().stream().anyMatch(schema -> schema.getIndexMode() == SchemaInfo.IndexMode.STREAMING);
}
@@ -157,6 +91,7 @@ public abstract class SearchCluster extends TreeConfigProducer<AnyConfigProducer
public final void setQueryTimeout(Double to) { this.queryTimeout = to; }
public final void setVisibilityDelay(double delay) { this.visibilityDelay = delay; }
+ protected abstract IndexingMode getIndexingMode();
public final Double getVisibilityDelay() { return visibilityDelay; }
public final Double getQueryTimeout() { return queryTimeout; }
public final void setClusterIndex(int index) { this.index = index; }
@@ -165,26 +100,13 @@ public abstract class SearchCluster extends TreeConfigProducer<AnyConfigProducer
public void fillDocumentDBConfig(String documentType, ProtonConfig.Documentdb.Builder builder) {
DocumentDatabase db = documentDbs.get(documentType);
if (db != null) {
- builder.inputdoctypename(documentType);
- if (db.getDerivedConfiguration().isStreaming()) {
- builder.configid(documentDBProducerForStreaming.get(documentType).getConfigId());
- } else {
- builder.configid(db.getConfigId());
- }
+ fillDocumentDBConfig(db, builder);
}
}
- public QrSearchersConfig.Searchcluster.Builder getQrSearcherConfig() {
- var builder = new QrSearchersConfig.Searchcluster.Builder()
- .name(getClusterName())
- .rankprofiles_configid(getConfigId())
- .storagecluster(new QrSearchersConfig.Searchcluster.Storagecluster.Builder().routespec(getStorageRouteSpec()))
- .indexingmode(hasStreaming() ? QrSearchersConfig.Searchcluster.Indexingmode.STREAMING
- : QrSearchersConfig.Searchcluster.Indexingmode.REALTIME);
- for (SchemaInfo spec : schemas().values()) {
- builder.searchdef(spec.fullSchema().getName());
- }
- return builder;
+ protected void fillDocumentDBConfig(DocumentDatabase sdoc, ProtonConfig.Documentdb.Builder ddbB) {
+ ddbB.inputdoctypename(sdoc.getSchemaName())
+ .configid(sdoc.getConfigId());
}
@Override
@@ -220,6 +142,24 @@ public abstract class SearchCluster extends TreeConfigProducer<AnyConfigProducer
@Override
public String toString() { return "search-capable cluster '" + clusterName + "'"; }
+ public static final class IndexingMode {
+
+ public static final IndexingMode REALTIME = new IndexingMode("REALTIME");
+ public static final IndexingMode STREAMING = new IndexingMode("STREAMING");
+
+ private final String name;
+
+ private IndexingMode(String name) {
+ this.name = name;
+ }
+
+ public String getName() { return name; }
+
+ public String toString() {
+ return "indexingmode: " + name;
+ }
+ }
+
/**
* Class used to retrieve combined configuration from multiple document databases.
* It is not a direct {@link ConfigInstance.Producer} of those configs,