aboutsummaryrefslogtreecommitdiffstats
path: root/config-model
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2024-01-18 16:49:37 +0100
committerGitHub <noreply@github.com>2024-01-18 16:49:37 +0100
commitf776ae0cc57ea8b330d0258aae85a5c000ee4536 (patch)
treecb864a35e8342b500171edddc7c8bf9fbf07c37d /config-model
parentab54f9c7cbd1bc3c1434717b875e1dfeb7b27dc4 (diff)
parentc8763af3fa8e0c0d965a38eef5be3c7de419d59d (diff)
Merge pull request #29960 from vespa-engine/arnej/streaming-validation
run verify for streaming clusters as well
Diffstat (limited to 'config-model')
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/RankSetupValidator.java16
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/application/validation/StreamingValidatorTest.java11
2 files changed, 14 insertions, 13 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/RankSetupValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/RankSetupValidator.java
index f2d9c0fcd1c..98adde7b547 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/RankSetupValidator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/RankSetupValidator.java
@@ -63,18 +63,14 @@ public class RankSetupValidator implements Validator {
context.deployState().getProperties().applicationId().toFullString() +
".")
.toFile();
- for (SearchCluster cluster : context.model().getSearchClusters()) {
- // Skipping ranking expression checking for streaming clusters, not implemented yet
- if (cluster.isStreaming()) continue;
-
- IndexedSearchCluster sc = (IndexedSearchCluster) cluster;
+ for (SearchCluster sc : context.model().getSearchClusters()) {
String clusterDir = cfgDir.getAbsolutePath() + "/" + sc.getClusterName() + "/";
for (DocumentDatabase docDb : sc.getDocumentDbs()) {
String schemaName = docDb.getDerivedConfiguration().getSchema().getName();
String schemaDir = clusterDir + schemaName + "/";
writeConfigs(schemaDir, docDb);
writeExtraVerifyRankSetupConfig(schemaDir, docDb);
- if (!validate(context, "dir:" + schemaDir, sc, schemaName, cfgDir)) {
+ if (!validate(context, "dir:" + schemaDir, sc, schemaName, cfgDir, sc.isStreaming())) {
return;
}
}
@@ -87,11 +83,11 @@ public class RankSetupValidator implements Validator {
}
}
- private boolean validate(Context context, String configId, SearchCluster searchCluster, String schema, File tempDir) {
+ private boolean validate(Context context, String configId, SearchCluster searchCluster, String schema, File tempDir, boolean isStreaming) {
Instant start = Instant.now();
try {
log.log(Level.FINE, () -> String.format("Validating schema '%s' for cluster %s with config id %s", schema, searchCluster, configId));
- boolean ret = execValidate(context, configId, searchCluster, schema);
+ boolean ret = execValidate(context, configId, searchCluster, schema, isStreaming);
if (!ret) {
// Give up, don't log same error msg repeatedly
deleteTempDir(tempDir);
@@ -175,8 +171,8 @@ public class RankSetupValidator implements Validator {
IOUtils.writeFile(dir + configName, StringUtilities.implodeMultiline(ConfigInstance.serialize(config)), false);
}
- private boolean execValidate(Context context, String configId, SearchCluster sc, String sdName) {
- String command = String.format("%s %s", binaryName, configId);
+ private boolean execValidate(Context context, String configId, SearchCluster sc, String sdName, boolean isStreaming) {
+ String command = String.format((isStreaming ? "%s %s -S" : "%s %s"), binaryName, configId);
try {
Pair<Integer, String> ret = new ProcessExecuter(true).exec(command);
Integer exitCode = ret.getFirst();
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/StreamingValidatorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/StreamingValidatorTest.java
index 6f66838ba47..5397c30f2bc 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/StreamingValidatorTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/StreamingValidatorTest.java
@@ -33,12 +33,16 @@ public class StreamingValidatorTest {
"Document references and imported fields are not allowed in streaming search."));
}
+ private static List<String> filter(List<String> warnings) {
+ return warnings.stream().filter(x -> x.indexOf("Cannot run program") == -1).toList();
+ }
+
@Test
void tensor_field_without_index_gives_no_warning() {
var logger = new TestableDeployLogger();
var model = createModel(logger, "field nn type tensor(x[2]) { indexing: attribute | summary\n" +
"attribute { distance-metric: euclidean } }");
- assertTrue(logger.warnings.isEmpty());
+ assertTrue(filter(logger.warnings).isEmpty());
}
@Test
@@ -46,9 +50,10 @@ public class StreamingValidatorTest {
var logger = new TestableDeployLogger();
var model = createModel(logger, "field nn type tensor(x[2]) { indexing: attribute | index | summary\n" +
"attribute { distance-metric: euclidean } }");
- assertEquals(1, logger.warnings.size());
+ var warnings = filter(logger.warnings);
+ assertEquals(1, warnings.size());
assertEquals("For streaming search cluster 'content.test', SD field 'nn': hnsw index is not relevant and not supported, ignoring setting",
- logger.warnings.get(0));
+ warnings.get(0));
}
private static VespaModel createModel(DeployLogger logger, String sdContent) {