summaryrefslogtreecommitdiffstats
path: root/config-model/src
diff options
context:
space:
mode:
authorJon Marius Venstad <venstad@gmail.com>2021-05-03 08:13:51 +0200
committerJon Marius Venstad <venstad@gmail.com>2021-05-03 08:13:51 +0200
commit45bc928423548c93e52000725df9a56971e3f8a6 (patch)
tree9011dc94a0584fc331d76eb865dbaeada2d0f753 /config-model/src
parentc5df332d4c7519565f45ce9301771c3662eda128 (diff)
Revert "Merge pull request #17692 from vespa-engine/revert-17670-jonmv/reindexing-when-new-extra-field-is-added"
This reverts commit 320422464e326adcbe67891f0ace8d702e4fd18d, reversing changes made to 23e6772cce9f39ae58b3ccd592f1ef69406d0b60.
Diffstat (limited to 'config-model/src')
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/VespaReindexAction.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/search/IndexingScriptChangeValidator.java11
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/search/IndexingScriptChangeValidatorTest.java16
3 files changed, 21 insertions, 8 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/VespaReindexAction.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/VespaReindexAction.java
index 8b4060e7d19..c2d23844687 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/VespaReindexAction.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/VespaReindexAction.java
@@ -46,7 +46,7 @@ public class VespaReindexAction extends VespaConfigChangeAction implements Confi
return new VespaReindexAction(clusterId(), validationId, newMessage, newServices, documentType);
}
- @Override public Optional<ValidationId> validationId() { return Optional.of(validationId); }
+ @Override public Optional<ValidationId> validationId() { return Optional.ofNullable(validationId); }
@Override public String getDocumentType() { return documentType; }
@Override public boolean ignoreForInternalRedeploy() { return false; }
@Override public String toString() { return super.toString() + ", documentType='" + documentType + "'"; }
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/search/IndexingScriptChangeValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/search/IndexingScriptChangeValidator.java
index 91e370211f1..20872bcf326 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/search/IndexingScriptChangeValidator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/search/IndexingScriptChangeValidator.java
@@ -2,7 +2,6 @@
package com.yahoo.vespa.model.application.validation.change.search;
import com.yahoo.config.application.api.ValidationId;
-import com.yahoo.config.application.api.ValidationOverrides;
import com.yahoo.config.provision.ClusterSpec;
import com.yahoo.searchdefinition.Search;
import com.yahoo.searchdefinition.document.ImmutableSDField;
@@ -13,8 +12,8 @@ import com.yahoo.vespa.indexinglanguage.expressions.ScriptExpression;
import com.yahoo.vespa.model.application.validation.change.VespaConfigChangeAction;
import com.yahoo.vespa.model.application.validation.change.VespaReindexAction;
-import java.time.Instant;
import java.util.ArrayList;
+import java.util.LinkedHashSet;
import java.util.List;
import java.util.Optional;
@@ -37,12 +36,18 @@ public class IndexingScriptChangeValidator {
public List<VespaConfigChangeAction> validate() {
List<VespaConfigChangeAction> result = new ArrayList<>();
- for (ImmutableSDField nextField : nextSearch.allConcreteFields()) {
+ for (ImmutableSDField nextField : new LinkedHashSet<>(nextSearch.allConcreteFields())) {
String fieldName = nextField.getName();
ImmutableSDField currentField = currentSearch.getConcreteField(fieldName);
if (currentField != null) {
validateScripts(currentField, nextField).ifPresent(r -> result.add(r));
}
+ else if (nextField.isExtraField()) {
+ result.add(VespaReindexAction.of(id,
+ null,
+ "Non-document field '" + nextField.getName() +
+ "' added; this may be populated by reindexing"));
+ }
}
return result;
}
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/search/IndexingScriptChangeValidatorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/search/IndexingScriptChangeValidatorTest.java
index 20f5a9c841c..b1fda081b64 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/search/IndexingScriptChangeValidatorTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/search/IndexingScriptChangeValidatorTest.java
@@ -2,14 +2,12 @@
package com.yahoo.vespa.model.application.validation.change.search;
import com.yahoo.config.application.api.ValidationId;
-import com.yahoo.config.application.api.ValidationOverrides;
import com.yahoo.config.provision.ClusterSpec;
import com.yahoo.vespa.indexinglanguage.expressions.ScriptExpression;
import com.yahoo.vespa.model.application.validation.change.VespaConfigChangeAction;
import com.yahoo.vespa.model.application.validation.change.VespaReindexAction;
import org.junit.Test;
-import java.time.Instant;
import java.util.Arrays;
import java.util.List;
@@ -130,7 +128,7 @@ public class IndexingScriptChangeValidatorTest {
}
@Test
- public void requireThatAddingIndexFieldIsOk() throws Exception {
+ public void requireThatAddingDocumentIndexFieldIsOk() throws Exception {
new Fixture("", "field f1 type string { indexing: index | summary }").
assertValidation();
}
@@ -142,12 +140,22 @@ public class IndexingScriptChangeValidatorTest {
}
@Test
- public void requireThatAddingFieldIsOk() throws Exception {
+ public void requireThatAddingDocumentFieldIsOk() throws Exception {
new Fixture("", FIELD + " { indexing: attribute | summary }").
assertValidation();
}
@Test
+ public void requireThatAddingExtraFieldRequiresReindexing() throws Exception {
+ new Fixture(" field f1 type string { indexing: index }",
+ " field f1 type string { indexing: index } } " +
+ " field f2 type string { indexing: input f1 | summary ")
+ .assertValidation(VespaReindexAction.of(ClusterSpec.Id.from("test"),
+ null,
+ "Non-document field 'f2' added; this may be populated by reindexing"));
+ }
+
+ @Test
public void requireThatAddingSummaryAspectIsOk() throws Exception {
new Fixture(FIELD + " { indexing: attribute }",
FIELD + " { indexing: attribute | summary }").