summaryrefslogtreecommitdiffstats
path: root/config-model
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2024-03-14 12:50:07 +0100
committerHenning Baldersheim <balder@yahoo-inc.com>2024-03-14 13:14:45 +0100
commit1fe5d1e05cce1dbb712f74b13731eb56a4be1b0d (patch)
tree0f1b76ab8cf342191bf3b1b247c35f6aa8def228 /config-model
parent6c76d7dfcf6df3e1f92034d114b55425071faef8 (diff)
Add index mode to Schema
Diffstat (limited to 'config-model')
-rw-r--r--config-model/src/main/java/com/yahoo/schema/derived/DerivedConfiguration.java17
-rw-r--r--config-model/src/main/java/com/yahoo/schema/derived/SchemaInfo.java21
-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.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/search/StreamingSearchCluster.java3
-rw-r--r--config-model/src/test/java/com/yahoo/schema/derived/AbstractExportingTestCase.java12
-rw-r--r--config-model/src/test/java/com/yahoo/schema/derived/SchemaToDerivedConfigExporter.java5
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/search/test/SchemaInfoTester.java4
8 files changed, 43 insertions, 23 deletions
diff --git a/config-model/src/main/java/com/yahoo/schema/derived/DerivedConfiguration.java b/config-model/src/main/java/com/yahoo/schema/derived/DerivedConfiguration.java
index b35918b3460..421f3d5a1d1 100644
--- a/config-model/src/main/java/com/yahoo/schema/derived/DerivedConfiguration.java
+++ b/config-model/src/main/java/com/yahoo/schema/derived/DerivedConfiguration.java
@@ -28,7 +28,7 @@ import java.io.Writer;
public class DerivedConfiguration {
private final Schema schema;
- private final boolean isStreaming;
+ private final SchemaInfo.IndexMode indexMode;
private Summaries summaries;
private Juniperrc juniperrc;
private AttributeFields attributeFields;
@@ -57,7 +57,8 @@ public class DerivedConfiguration {
}
DerivedConfiguration(Schema schema, RankProfileRegistry rankProfileRegistry, QueryProfileRegistry queryProfiles) {
- this(schema, new DeployState.Builder().rankProfileRegistry(rankProfileRegistry).queryProfiles(queryProfiles).build(), false);
+ this(new DeployState.Builder().rankProfileRegistry(rankProfileRegistry).queryProfiles(queryProfiles).build(),
+ schema, SchemaInfo.IndexMode.INDEX);
}
/**
@@ -67,8 +68,8 @@ public class DerivedConfiguration {
* argument is live. Which means that this object will be inconsistent if the given
* schema is later modified.
*/
- public DerivedConfiguration(Schema schema, DeployState deployState, boolean isStreaming) {
- this.isStreaming = isStreaming;
+ public DerivedConfiguration(DeployState deployState, Schema schema, SchemaInfo.IndexMode indexMode) {
+ this.indexMode = indexMode;
try {
Validator.ensureNotNull("Schema", schema);
this.schema = schema;
@@ -81,9 +82,9 @@ public class DerivedConfiguration {
summaries = new Summaries(schema, deployState.getDeployLogger(), deployState.getProperties().featureFlags());
juniperrc = new Juniperrc(schema);
rankProfileList = new RankProfileList(schema, schema.rankExpressionFiles(), attributeFields, deployState);
- indexingScript = new IndexingScript(schema, isStreaming);
- indexInfo = new IndexInfo(schema, isStreaming);
- schemaInfo = new SchemaInfo(schema, deployState.rankProfileRegistry(), summaries);
+ indexingScript = new IndexingScript(schema, isStreaming());
+ indexInfo = new IndexInfo(schema, isStreaming());
+ schemaInfo = new SchemaInfo(schema, indexMode, deployState.rankProfileRegistry(), summaries);
indexSchema = new IndexSchema(schema);
importedFields = new ImportedFields(schema);
}
@@ -153,7 +154,7 @@ public class DerivedConfiguration {
}
public boolean isStreaming() {
- return isStreaming;
+ return indexMode == SchemaInfo.IndexMode.STREAMING;
}
public Summaries getSummaries() {
diff --git a/config-model/src/main/java/com/yahoo/schema/derived/SchemaInfo.java b/config-model/src/main/java/com/yahoo/schema/derived/SchemaInfo.java
index 19a045ac444..f996b2624db 100644
--- a/config-model/src/main/java/com/yahoo/schema/derived/SchemaInfo.java
+++ b/config-model/src/main/java/com/yahoo/schema/derived/SchemaInfo.java
@@ -42,13 +42,32 @@ public final class SchemaInfo extends Derived {
private final Map<String, RankProfileInfo> rankProfiles;
private final Summaries summaries;
+ private final IndexMode indexMode;
- public SchemaInfo(Schema schema, RankProfileRegistry rankProfileRegistry, Summaries summaries) {
+ public enum IndexMode {INDEX, STREAMING, STORE_ONLY}
+
+ public SchemaInfo(Schema schema, String indexMode, RankProfileRegistry rankProfileRegistry, Summaries summaries) {
+ this(schema, indexMode(indexMode), rankProfileRegistry, summaries);
+ }
+ public SchemaInfo(Schema schema, IndexMode indexMode, RankProfileRegistry rankProfileRegistry, Summaries summaries) {
this.schema = schema;
this.rankProfiles = Collections.unmodifiableMap(toRankProfiles(rankProfileRegistry.rankProfilesOf(schema)));
this.summaries = summaries;
+ this.indexMode = indexMode;
}
+ private static IndexMode indexMode(String mode) {
+ if (mode == null) return IndexMode.INDEX;
+ return switch (mode) {
+ case "index" -> IndexMode.INDEX;
+ case "streaming" -> IndexMode.STREAMING;
+ case "store-only" -> IndexMode.STORE_ONLY;
+ default -> IndexMode.STORE_ONLY;
+ };
+ }
+
+ public IndexMode getIndexMode() { return indexMode; }
+
public String name() { return schema.getName(); }
@Override
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 125d3b10512..91a5716b0f8 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
@@ -258,7 +258,7 @@ public class ContentSearchCluster extends TreeConfigProducer<AnyConfigProducer>
throw new IllegalArgumentException("Schema '" + schemaDefinitionXMLHandler.getName() + "' referenced in " +
this + " does not exist");
- sc.add(new SchemaInfo(schema, deployState.rankProfileRegistry(), null));
+ sc.add(new SchemaInfo(schema, e.stringAttribute("mode"), deployState.rankProfileRegistry(), null));
}
}
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 b51185ddac2..4a37b27d1c7 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
@@ -65,7 +65,7 @@ public class IndexedSearchCluster extends SearchCluster implements
for (SchemaInfo spec : schemas().values()) {
if (spec.fullSchema() instanceof DocumentOnlySchema) continue;
var db = new DocumentDatabase(this, spec.fullSchema().getName(),
- new DerivedConfiguration(spec.fullSchema(), deployState, false));
+ new DerivedConfiguration(deployState, spec.fullSchema(), spec.getIndexMode()));
add(db);
}
}
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 3f15bc90b8f..e188a086614 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
@@ -7,6 +7,7 @@ import com.yahoo.config.model.producer.TreeConfigProducer;
import com.yahoo.schema.Schema;
import com.yahoo.schema.derived.AttributeFields;
import com.yahoo.schema.derived.DerivedConfiguration;
+import com.yahoo.schema.derived.SchemaInfo;
import com.yahoo.vespa.config.search.AttributesConfig;
import com.yahoo.vespa.config.search.RankProfilesConfig;
import com.yahoo.vespa.config.search.SummaryConfig;
@@ -64,7 +65,7 @@ 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() + "'");
- add(new DocumentDatabase(this, docTypeName, new DerivedConfiguration(schema, deployState, true)));
+ add(new DocumentDatabase(this, docTypeName, new DerivedConfiguration(deployState, schema, SchemaInfo.IndexMode.STREAMING)));
}
protected void fillDocumentDBConfig(DocumentDatabase sdoc, ProtonConfig.Documentdb.Builder ddbB) {
diff --git a/config-model/src/test/java/com/yahoo/schema/derived/AbstractExportingTestCase.java b/config-model/src/test/java/com/yahoo/schema/derived/AbstractExportingTestCase.java
index 7d7ed2b23eb..52ddf238c96 100644
--- a/config-model/src/test/java/com/yahoo/schema/derived/AbstractExportingTestCase.java
+++ b/config-model/src/test/java/com/yahoo/schema/derived/AbstractExportingTestCase.java
@@ -47,12 +47,12 @@ public abstract class AbstractExportingTestCase extends AbstractSchemaTestCase {
TestProperties properties,
ApplicationBuilder builder,
DeployLogger logger) throws IOException {
- DerivedConfiguration config = new DerivedConfiguration(builder.getSchema(schemaName),
- new DeployState.Builder().properties(properties)
- .deployLogger(logger)
- .rankProfileRegistry(builder.getRankProfileRegistry())
- .queryProfiles(builder.getQueryProfileRegistry())
- .build(), false);
+ DerivedConfiguration config = new DerivedConfiguration(new DeployState.Builder()
+ .properties(properties)
+ .deployLogger(logger)
+ .rankProfileRegistry(builder.getRankProfileRegistry())
+ .queryProfiles(builder.getQueryProfileRegistry())
+ .build(), builder.getSchema(schemaName), SchemaInfo.IndexMode.INDEX);
return export(dirName, builder, config);
}
diff --git a/config-model/src/test/java/com/yahoo/schema/derived/SchemaToDerivedConfigExporter.java b/config-model/src/test/java/com/yahoo/schema/derived/SchemaToDerivedConfigExporter.java
index 2beab3d5ea9..c940afce428 100644
--- a/config-model/src/test/java/com/yahoo/schema/derived/SchemaToDerivedConfigExporter.java
+++ b/config-model/src/test/java/com/yahoo/schema/derived/SchemaToDerivedConfigExporter.java
@@ -41,12 +41,13 @@ public class SchemaToDerivedConfigExporter {
var props = new TestProperties();
var logger = new TestableDeployLogger();
var builder = ApplicationBuilder.createFromDirectory(dirPath, new MockFileRegistry(), logger, props);
- var derived = new DerivedConfiguration(builder.getSchema(null),
+ var derived = new DerivedConfiguration(
new DeployState.Builder().properties(props)
.deployLogger(logger)
.rankProfileRegistry(builder.getRankProfileRegistry())
.queryProfiles(builder.getQueryProfileRegistry())
- .build(), false);
+ .build(),
+ builder.getSchema(null), SchemaInfo.IndexMode.INDEX);
exportConfig(dirPath, derived, builder);
}
}
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/search/test/SchemaInfoTester.java b/config-model/src/test/java/com/yahoo/vespa/model/search/test/SchemaInfoTester.java
index 388c064daf4..9e4ca630340 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/search/test/SchemaInfoTester.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/search/test/SchemaInfoTester.java
@@ -2,13 +2,11 @@
package com.yahoo.vespa.model.search.test;
import com.yahoo.config.model.deploy.TestProperties;
-import com.yahoo.document.DataType;
import com.yahoo.schema.RankProfileRegistry;
import com.yahoo.schema.Schema;
import com.yahoo.schema.derived.SchemaInfo;
import com.yahoo.schema.derived.Summaries;
import com.yahoo.schema.document.SDDocumentType;
-import com.yahoo.schema.document.SDField;
import com.yahoo.search.config.SchemaInfoConfig;
import com.yahoo.vespa.documentmodel.DocumentSummary;
import com.yahoo.vespa.model.test.utils.DeployLoggerStub;
@@ -27,7 +25,7 @@ public class SchemaInfoTester {
}
public String schemaInfoConfig(Schema schema) {
- var schemaInfo = new SchemaInfo(schema, new RankProfileRegistry(), new Summaries(schema, new DeployLoggerStub(), new TestProperties()));
+ var schemaInfo = new SchemaInfo(schema, SchemaInfo.IndexMode.INDEX, new RankProfileRegistry(), new Summaries(schema, new DeployLoggerStub(), new TestProperties()));
var schemaInfoConfigBuilder = new SchemaInfoConfig.Builder();
schemaInfo.getConfig(schemaInfoConfigBuilder);
var schemaInfoConfig = schemaInfoConfigBuilder.build();