diff options
author | Jon Marius Venstad <venstad@gmail.com> | 2021-05-03 08:13:51 +0200 |
---|---|---|
committer | Jon Marius Venstad <venstad@gmail.com> | 2021-05-03 08:13:51 +0200 |
commit | 45bc928423548c93e52000725df9a56971e3f8a6 (patch) | |
tree | 9011dc94a0584fc331d76eb865dbaeada2d0f753 /config-model/src | |
parent | c5df332d4c7519565f45ce9301771c3662eda128 (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')
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 }"). |