From 40744a1a30cccff9c4b4b9f67ae6891956509ee3 Mon Sep 17 00:00:00 2001 From: Jon Bratseth Date: Mon, 4 Jul 2022 22:47:21 +0200 Subject: Add option to ignore undefined fields --- .../java/com/yahoo/schema/ApplicationBuilder.java | 2 +- .../schema/parser/IntermediateCollection.java | 2 +- .../configmodel/producers/DocumentManager.java | 8 ++--- .../vespa/configmodel/producers/DocumentTypes.java | 1 + .../yahoo/vespa/documentmodel/DocumentModel.java | 16 ++++----- .../vespa/model/clients/ContainerDocumentApi.java | 39 +++++++++++----------- .../vespa/model/container/ContainerCluster.java | 4 ++- .../model/container/xml/ContainerModelBuilder.java | 5 +-- .../container/xml/DocumentApiOptionsBuilder.java | 5 ++- .../src/main/resources/schema/containercluster.rnc | 1 + .../src/test/configmodel/types/documentmanager.cfg | 1 + .../src/test/configmodel/types/documenttypes.cfg | 1 + .../types/documenttypes_with_doc_field.cfg | 1 + .../documentmanager_multiple_imported_fields.cfg | 1 + .../documentmanager_refs_to_other_types.cfg | 1 + .../documentmanager_refs_to_same_type.cfg | 1 + .../documenttypes_multiple_imported_fields.cfg | 1 + .../references/documenttypes_ref_to_self_type.cfg | 1 + .../documenttypes_refs_to_other_types.cfg | 1 + .../references/documenttypes_refs_to_same_type.cfg | 1 + .../src/test/derived/advanced/documentmanager.cfg | 1 + .../annotationsimplicitstruct/documentmanager.cfg | 1 + .../annotationsinheritance/documentmanager.cfg | 1 + .../annotationsinheritance2/documentmanager.cfg | 1 + .../annotationspolymorphy/documentmanager.cfg | 1 + .../annotationsreference/documentmanager.cfg | 1 + .../derived/annotationssimple/documentmanager.cfg | 1 + .../derived/annotationsstruct/documentmanager.cfg | 1 + .../annotationsstructarray/documentmanager.cfg | 1 + .../src/test/derived/arrays/documentmanager.cfg | 1 + .../derived/attributeprefetch/documentmanager.cfg | 1 + .../src/test/derived/complex/documentmanager.cfg | 1 + .../test/derived/declstruct/documentmanager.cfg | 1 + .../derived/duplicate_struct/documentmanager.cfg | 1 + .../derived/duplicate_struct/documenttypes.cfg | 1 + .../test/derived/emptydefault/documentmanager.cfg | 1 + .../src/test/derived/id/documentmanager.cfg | 1 + .../documenttypes.cfg | 1 + .../test/derived/indexswitches/documentmanager.cfg | 1 + .../test/derived/inheritance/documentmanager.cfg | 1 + .../derived/inheritdiamond/documentmanager.cfg | 1 + .../inheritfromgrandparent/documentmanager.cfg | 1 + .../derived/inheritfromparent/documentmanager.cfg | 1 + .../derived/inheritfromparent/documenttypes.cfg | 1 + .../test/derived/multi_struct/documentmanager.cfg | 1 + .../test/derived/multi_struct/documenttypes.cfg | 1 + .../test/derived/namecollision/documentmanager.cfg | 1 + .../prefixexactattribute/documentmanager.cfg | 1 + .../src/test/derived/ranktypes/documentmanager.cfg | 1 + .../reference_from_several/documentmanager.cfg | 1 + .../derived/schemainheritance/documentmanager.cfg | 1 + .../derived/streamingstruct/documentmanager.cfg | 1 + .../derived/structandfieldset/documentmanager.cfg | 1 + .../derived/structanyorder/documentmanager.cfg | 1 + .../derived/structinheritance/documentmanager.cfg | 1 + .../derived/structinheritance/documenttypes.cfg | 1 + .../src/test/derived/tensor/documentmanager.cfg | 1 + .../src/test/derived/tensor/documenttypes.cfg | 1 + .../src/test/derived/types/documentmanager.cfg | 1 + .../test/examples/fieldoftypedocument-doctypes.cfg | 1 + .../src/test/examples/fieldoftypedocument.cfg | 1 + config-model/src/test/examples/structresult.cfg | 1 + .../xml/ContainerDocumentApiBuilderTest.java | 18 +++++++++- .../xml/ContainerModelBuilderTestBase.java | 9 +++-- 64 files changed, 118 insertions(+), 44 deletions(-) (limited to 'config-model/src') diff --git a/config-model/src/main/java/com/yahoo/schema/ApplicationBuilder.java b/config-model/src/main/java/com/yahoo/schema/ApplicationBuilder.java index d98709569b1..894415091e4 100644 --- a/config-model/src/main/java/com/yahoo/schema/ApplicationBuilder.java +++ b/config-model/src/main/java/com/yahoo/schema/ApplicationBuilder.java @@ -107,7 +107,7 @@ public class ApplicationBuilder { this(MockApplicationPackage.createEmpty(), new MockFileRegistry(), new BaseDeployLogger(), properties, rankProfileRegistry, queryProfileRegistry); } - /** normal constructor */ + /** Regular constructor */ public ApplicationBuilder(ApplicationPackage app, FileRegistry fileRegistry, DeployLogger deployLogger, diff --git a/config-model/src/main/java/com/yahoo/schema/parser/IntermediateCollection.java b/config-model/src/main/java/com/yahoo/schema/parser/IntermediateCollection.java index 8bb9bca3249..139d20aac82 100644 --- a/config-model/src/main/java/com/yahoo/schema/parser/IntermediateCollection.java +++ b/config-model/src/main/java/com/yahoo/schema/parser/IntermediateCollection.java @@ -26,7 +26,7 @@ public class IntermediateCollection { private final DeployLogger deployLogger; private final ModelContext.Properties modelProperties; - private Map parsedSchemas = new LinkedHashMap<>(); + private final Map parsedSchemas = new LinkedHashMap<>(); IntermediateCollection() { this.deployLogger = new BaseDeployLogger(); diff --git a/config-model/src/main/java/com/yahoo/vespa/configmodel/producers/DocumentManager.java b/config-model/src/main/java/com/yahoo/vespa/configmodel/producers/DocumentManager.java index e54ed1f1a8b..c6fcd4c115c 100644 --- a/config-model/src/main/java/com/yahoo/vespa/configmodel/producers/DocumentManager.java +++ b/config-model/src/main/java/com/yahoo/vespa/configmodel/producers/DocumentManager.java @@ -36,14 +36,13 @@ public class DocumentManager { private boolean useV8GeoPositions = false; - public DocumentManager useV8GeoPositions(boolean value) { - this.useV8GeoPositions = value; + public DocumentManager useV8GeoPositions(boolean useV8GeoPositions) { + this.useV8GeoPositions = useV8GeoPositions; return this; } public DocumentmanagerConfig.Builder produce(DocumentModel model, - DocumentmanagerConfig.Builder documentConfigBuilder) - { + DocumentmanagerConfig.Builder documentConfigBuilder) { return produceDocTypes(model, documentConfigBuilder); } @@ -75,6 +74,7 @@ public class DocumentManager { } static private class IdxMap { + private final Map doneMap = new HashMap<>(); private final Map map = new HashMap<>(); private final DataTypeRecognizer recognizer = new DataTypeRecognizer(); diff --git a/config-model/src/main/java/com/yahoo/vespa/configmodel/producers/DocumentTypes.java b/config-model/src/main/java/com/yahoo/vespa/configmodel/producers/DocumentTypes.java index 549b94adc02..d62270034f0 100644 --- a/config-model/src/main/java/com/yahoo/vespa/configmodel/producers/DocumentTypes.java +++ b/config-model/src/main/java/com/yahoo/vespa/configmodel/producers/DocumentTypes.java @@ -33,6 +33,7 @@ import java.util.Set; * @author baldersheim */ public class DocumentTypes { + private boolean useV8GeoPositions = false; public DocumentTypes useV8GeoPositions(boolean value) { diff --git a/config-model/src/main/java/com/yahoo/vespa/documentmodel/DocumentModel.java b/config-model/src/main/java/com/yahoo/vespa/documentmodel/DocumentModel.java index 15599c567ab..76f0bbd854e 100644 --- a/config-model/src/main/java/com/yahoo/vespa/documentmodel/DocumentModel.java +++ b/config-model/src/main/java/com/yahoo/vespa/documentmodel/DocumentModel.java @@ -4,20 +4,18 @@ package com.yahoo.vespa.documentmodel; import com.yahoo.documentmodel.DocumentTypeRepo; /** - * DocumentModel represents everything derived from a set of search definitions. - * It contains a document manager managing all defined document types. - * It contains a search manager managing all specified search definitions. - * It contains a storage manager managing all specified storage definitions. + * DocumentModel represents everything derived from a set of schemas. + * It contains a document manager managing all defined document types, and + * a search manager managing all search aspects of the schemas. * * @author baldersheim */ public class DocumentModel { - private final DocumentTypeRepo documentMan = new DocumentTypeRepo(); - private final SearchManager searchMan = new SearchManager(); + private final DocumentTypeRepo documentManager = new DocumentTypeRepo(); + private final SearchManager searchManager = new SearchManager(); - public DocumentTypeRepo getDocumentManager() { return documentMan; } - - public SearchManager getSearchManager() { return searchMan; } + public DocumentTypeRepo getDocumentManager() { return documentManager; } + public SearchManager getSearchManager() { return searchManager; } } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/clients/ContainerDocumentApi.java b/config-model/src/main/java/com/yahoo/vespa/model/clients/ContainerDocumentApi.java index 8534e1f65a7..15a0e060e1c 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/clients/ContainerDocumentApi.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/clients/ContainerDocumentApi.java @@ -22,23 +22,26 @@ public class ContainerDocumentApi { public static final String DOCUMENT_V1_PREFIX = "/document/v1"; - public ContainerDocumentApi(ContainerCluster cluster, Options options) { - addRestApiHandler(cluster, options); - addFeedHandler(cluster, options); + private final boolean ignoreUndefinedFields; + + public ContainerDocumentApi(ContainerCluster cluster, HandlerOptions handlerOptions, boolean ignoreUndefinedFields) { + this.ignoreUndefinedFields = ignoreUndefinedFields; + addRestApiHandler(cluster, handlerOptions); + addFeedHandler(cluster, handlerOptions); } - private static void addFeedHandler(ContainerCluster cluster, Options options) { + private static void addFeedHandler(ContainerCluster cluster, HandlerOptions handlerOptions) { String bindingSuffix = ContainerCluster.RESERVED_URI_PREFIX + "/feedapi"; - var handler = newVespaClientHandler("com.yahoo.vespa.http.server.FeedHandler", bindingSuffix, options); + var handler = newVespaClientHandler("com.yahoo.vespa.http.server.FeedHandler", bindingSuffix, handlerOptions); cluster.addComponent(handler); - var executor = new Threadpool("feedapi-handler", cluster, options.feedApiThreadpoolOptions); + var executor = new Threadpool("feedapi-handler", handlerOptions.feedApiThreadpoolOptions); handler.inject(executor); handler.addComponent(executor); } - private static void addRestApiHandler(ContainerCluster cluster, Options options) { - var handler = newVespaClientHandler("com.yahoo.document.restapi.resource.DocumentV1ApiHandler", DOCUMENT_V1_PREFIX + "/*", options); + private static void addRestApiHandler(ContainerCluster cluster, HandlerOptions handlerOptions) { + var handler = newVespaClientHandler("com.yahoo.document.restapi.resource.DocumentV1ApiHandler", DOCUMENT_V1_PREFIX + "/*", handlerOptions); cluster.addComponent(handler); // We need to include a dummy implementation of the previous restapi handler (using the same class name). @@ -47,17 +50,19 @@ public class ContainerDocumentApi { cluster.addComponent(oldHandlerDummy); } + public boolean ignoreUndefinedFields() { return ignoreUndefinedFields; } + private static Handler> newVespaClientHandler( String componentId, String bindingSuffix, - Options options) { + HandlerOptions handlerOptions) { Handler> handler = handlerComponentSpecification(componentId); - if (options.bindings.isEmpty()) { + if (handlerOptions.bindings.isEmpty()) { handler.addServerBindings( SystemBindingPattern.fromHttpPath(bindingSuffix), SystemBindingPattern.fromHttpPath(bindingSuffix + '/')); } else { - for (String rootBinding : options.bindings) { + for (String rootBinding : handlerOptions.bindings) { String pathWithoutLeadingSlash = bindingSuffix.substring(1); handler.addServerBindings( UserBindingPattern.fromPattern(rootBinding + pathWithoutLeadingSlash), @@ -72,11 +77,12 @@ public class ContainerDocumentApi { BundleInstantiationSpecification.getFromStrings(className, null, "vespaclient-container-plugin"), "")); } - public static final class Options { + public static final class HandlerOptions { + private final Collection bindings; private final ContainerThreadpool.UserOptions feedApiThreadpoolOptions; - public Options(Collection bindings, ContainerThreadpool.UserOptions feedApiThreadpoolOptions) { + public HandlerOptions(Collection bindings, ContainerThreadpool.UserOptions feedApiThreadpoolOptions) { this.bindings = Collections.unmodifiableCollection(bindings); this.feedApiThreadpoolOptions = feedApiThreadpoolOptions; } @@ -84,13 +90,8 @@ public class ContainerDocumentApi { private static class Threadpool extends ContainerThreadpool { - private final ContainerCluster cluster; - - Threadpool(String name, - ContainerCluster cluster, - ContainerThreadpool.UserOptions threadpoolOptions) { + Threadpool(String name, ContainerThreadpool.UserOptions threadpoolOptions) { super(name, threadpoolOptions); - this.cluster = cluster; } @Override diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java index 3d4b6dcbe7e..5adea6d50e8 100755 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java @@ -105,7 +105,7 @@ public abstract class ContainerCluster /** * URI prefix used for internal, usually programmatic, APIs. URIs using this - * prefix should never considered available for direct use by customers, and + * prefix should never be considered available for direct use by customers, and * normal compatibility concerns only applies to libraries using the URIs in * question, not contents served from the URIs themselves. */ @@ -414,6 +414,8 @@ public abstract class ContainerCluster public void getConfig(DocumentmanagerConfig.Builder builder) { if (containerDocproc != null && containerDocproc.isCompressDocuments()) builder.enablecompression(true); + if (containerDocumentApi != null) + builder.ignoreundefinedfields(containerDocumentApi.ignoreUndefinedFields()); } @Override diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java index 1dad0c7960d..7cc1109f25f 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java @@ -924,8 +924,9 @@ public class ContainerModelBuilder extends ConfigModelBuilder { Element documentApiElement = XML.getChild(spec, "document-api"); if (documentApiElement == null) return null; - ContainerDocumentApi.Options documentApiOptions = DocumentApiOptionsBuilder.build(documentApiElement); - return new ContainerDocumentApi(cluster, documentApiOptions); + ContainerDocumentApi.HandlerOptions documentApiOptions = DocumentApiOptionsBuilder.build(documentApiElement); + return new ContainerDocumentApi(cluster, documentApiOptions, + documentApiElement.getAttribute("ignore-undefined-fields").equals("true")); } private ContainerDocproc buildDocproc(DeployState deployState, ApplicationContainerCluster cluster, Element spec) { diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/DocumentApiOptionsBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/DocumentApiOptionsBuilder.java index 2ef31469c45..bb1d0af1db9 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/DocumentApiOptionsBuilder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/DocumentApiOptionsBuilder.java @@ -18,9 +18,8 @@ public class DocumentApiOptionsBuilder { private static final Logger log = Logger.getLogger(DocumentApiOptionsBuilder.class.getName()); - - public static ContainerDocumentApi.Options build(Element spec) { - return new ContainerDocumentApi.Options(getBindings(spec), threadpoolOptions(spec, "http-client-api")); + public static ContainerDocumentApi.HandlerOptions build(Element spec) { + return new ContainerDocumentApi.HandlerOptions(getBindings(spec), threadpoolOptions(spec, "http-client-api")); } private static ContainerThreadpool.UserOptions threadpoolOptions(Element spec, String elementName) { diff --git a/config-model/src/main/resources/schema/containercluster.rnc b/config-model/src/main/resources/schema/containercluster.rnc index 1ab3c9893bf..ea468438483 100644 --- a/config-model/src/main/resources/schema/containercluster.rnc +++ b/config-model/src/main/resources/schema/containercluster.rnc @@ -203,6 +203,7 @@ ProcessingInContainer = element processing { DocumentApi = element document-api { ServerBindings & GenericConfig* & + attribute ignore-undefined-fields { xsd:boolean }? & element abortondocumenterror { xsd:boolean }? & element retryenabled { xsd:boolean }? & element route { text }? & diff --git a/config-model/src/test/configmodel/types/documentmanager.cfg b/config-model/src/test/configmodel/types/documentmanager.cfg index 00920cc6d76..c471935d9da 100644 --- a/config-model/src/test/configmodel/types/documentmanager.cfg +++ b/config-model/src/test/configmodel/types/documentmanager.cfg @@ -1,3 +1,4 @@ +ignoreundefinedfields false enablecompression false usev8geopositions false doctype[0].name "document" diff --git a/config-model/src/test/configmodel/types/documenttypes.cfg b/config-model/src/test/configmodel/types/documenttypes.cfg index 7ea2fa42a2a..d35928a7a4b 100644 --- a/config-model/src/test/configmodel/types/documenttypes.cfg +++ b/config-model/src/test/configmodel/types/documenttypes.cfg @@ -1,3 +1,4 @@ +ignoreundefinedfields false enablecompression false usev8geopositions false doctype[0].name "document" diff --git a/config-model/src/test/configmodel/types/documenttypes_with_doc_field.cfg b/config-model/src/test/configmodel/types/documenttypes_with_doc_field.cfg index 15430101553..f8c7dacd3af 100644 --- a/config-model/src/test/configmodel/types/documenttypes_with_doc_field.cfg +++ b/config-model/src/test/configmodel/types/documenttypes_with_doc_field.cfg @@ -1,3 +1,4 @@ +ignoreundefinedfields false enablecompression false usev8geopositions false doctype[0].name "document" diff --git a/config-model/src/test/configmodel/types/references/documentmanager_multiple_imported_fields.cfg b/config-model/src/test/configmodel/types/references/documentmanager_multiple_imported_fields.cfg index a4b37113ef1..bf2ae28c417 100644 --- a/config-model/src/test/configmodel/types/references/documentmanager_multiple_imported_fields.cfg +++ b/config-model/src/test/configmodel/types/references/documentmanager_multiple_imported_fields.cfg @@ -1,3 +1,4 @@ +ignoreundefinedfields false enablecompression false usev8geopositions false doctype[0].name "document" diff --git a/config-model/src/test/configmodel/types/references/documentmanager_refs_to_other_types.cfg b/config-model/src/test/configmodel/types/references/documentmanager_refs_to_other_types.cfg index f6d4269abcd..7f93eea8e90 100644 --- a/config-model/src/test/configmodel/types/references/documentmanager_refs_to_other_types.cfg +++ b/config-model/src/test/configmodel/types/references/documentmanager_refs_to_other_types.cfg @@ -1,3 +1,4 @@ +ignoreundefinedfields false enablecompression false usev8geopositions false doctype[0].name "document" diff --git a/config-model/src/test/configmodel/types/references/documentmanager_refs_to_same_type.cfg b/config-model/src/test/configmodel/types/references/documentmanager_refs_to_same_type.cfg index 31f514b16cd..ecb499b5ed3 100644 --- a/config-model/src/test/configmodel/types/references/documentmanager_refs_to_same_type.cfg +++ b/config-model/src/test/configmodel/types/references/documentmanager_refs_to_same_type.cfg @@ -1,3 +1,4 @@ +ignoreundefinedfields false enablecompression false usev8geopositions false doctype[0].name "document" diff --git a/config-model/src/test/configmodel/types/references/documenttypes_multiple_imported_fields.cfg b/config-model/src/test/configmodel/types/references/documenttypes_multiple_imported_fields.cfg index 1582c6572da..6073faca616 100644 --- a/config-model/src/test/configmodel/types/references/documenttypes_multiple_imported_fields.cfg +++ b/config-model/src/test/configmodel/types/references/documenttypes_multiple_imported_fields.cfg @@ -1,3 +1,4 @@ +ignoreundefinedfields false enablecompression false usev8geopositions false doctype[0].name "document" diff --git a/config-model/src/test/configmodel/types/references/documenttypes_ref_to_self_type.cfg b/config-model/src/test/configmodel/types/references/documenttypes_ref_to_self_type.cfg index 19bcb81db38..92bde94f54a 100644 --- a/config-model/src/test/configmodel/types/references/documenttypes_ref_to_self_type.cfg +++ b/config-model/src/test/configmodel/types/references/documenttypes_ref_to_self_type.cfg @@ -1,3 +1,4 @@ +ignoreundefinedfields false enablecompression false usev8geopositions false documenttype[].id 2987301 diff --git a/config-model/src/test/configmodel/types/references/documenttypes_refs_to_other_types.cfg b/config-model/src/test/configmodel/types/references/documenttypes_refs_to_other_types.cfg index 4222229cdd3..5ea07de4124 100644 --- a/config-model/src/test/configmodel/types/references/documenttypes_refs_to_other_types.cfg +++ b/config-model/src/test/configmodel/types/references/documenttypes_refs_to_other_types.cfg @@ -1,3 +1,4 @@ +ignoreundefinedfields false enablecompression false usev8geopositions false doctype[0].name "document" diff --git a/config-model/src/test/configmodel/types/references/documenttypes_refs_to_same_type.cfg b/config-model/src/test/configmodel/types/references/documenttypes_refs_to_same_type.cfg index 0d3802bcbe3..f31e5f6e7c0 100644 --- a/config-model/src/test/configmodel/types/references/documenttypes_refs_to_same_type.cfg +++ b/config-model/src/test/configmodel/types/references/documenttypes_refs_to_same_type.cfg @@ -1,3 +1,4 @@ +ignoreundefinedfields false enablecompression false usev8geopositions false doctype[0].name "document" diff --git a/config-model/src/test/derived/advanced/documentmanager.cfg b/config-model/src/test/derived/advanced/documentmanager.cfg index 6eea5ae038b..1ad50f57e93 100644 --- a/config-model/src/test/derived/advanced/documentmanager.cfg +++ b/config-model/src/test/derived/advanced/documentmanager.cfg @@ -1,3 +1,4 @@ +ignoreundefinedfields false enablecompression false usev8geopositions false doctype[].name "document" diff --git a/config-model/src/test/derived/annotationsimplicitstruct/documentmanager.cfg b/config-model/src/test/derived/annotationsimplicitstruct/documentmanager.cfg index f15b49c6b76..1ca66a7aea2 100644 --- a/config-model/src/test/derived/annotationsimplicitstruct/documentmanager.cfg +++ b/config-model/src/test/derived/annotationsimplicitstruct/documentmanager.cfg @@ -1,3 +1,4 @@ +ignoreundefinedfields false enablecompression false usev8geopositions false doctype[].name "document" diff --git a/config-model/src/test/derived/annotationsinheritance/documentmanager.cfg b/config-model/src/test/derived/annotationsinheritance/documentmanager.cfg index 4098c0fe53c..8dc07ae8eab 100644 --- a/config-model/src/test/derived/annotationsinheritance/documentmanager.cfg +++ b/config-model/src/test/derived/annotationsinheritance/documentmanager.cfg @@ -1,3 +1,4 @@ +ignoreundefinedfields false enablecompression false usev8geopositions false doctype[].name "document" diff --git a/config-model/src/test/derived/annotationsinheritance2/documentmanager.cfg b/config-model/src/test/derived/annotationsinheritance2/documentmanager.cfg index b67f1df3b4b..67c47032995 100644 --- a/config-model/src/test/derived/annotationsinheritance2/documentmanager.cfg +++ b/config-model/src/test/derived/annotationsinheritance2/documentmanager.cfg @@ -1,3 +1,4 @@ +ignoreundefinedfields false enablecompression false usev8geopositions false doctype[].name "document" diff --git a/config-model/src/test/derived/annotationspolymorphy/documentmanager.cfg b/config-model/src/test/derived/annotationspolymorphy/documentmanager.cfg index df8d038fe79..dbe6054ce6c 100644 --- a/config-model/src/test/derived/annotationspolymorphy/documentmanager.cfg +++ b/config-model/src/test/derived/annotationspolymorphy/documentmanager.cfg @@ -1,3 +1,4 @@ +ignoreundefinedfields false enablecompression false usev8geopositions false doctype[].name "document" diff --git a/config-model/src/test/derived/annotationsreference/documentmanager.cfg b/config-model/src/test/derived/annotationsreference/documentmanager.cfg index 94258fdb798..d27ff5c9d07 100644 --- a/config-model/src/test/derived/annotationsreference/documentmanager.cfg +++ b/config-model/src/test/derived/annotationsreference/documentmanager.cfg @@ -1,3 +1,4 @@ +ignoreundefinedfields false enablecompression false usev8geopositions false doctype[].name "document" diff --git a/config-model/src/test/derived/annotationssimple/documentmanager.cfg b/config-model/src/test/derived/annotationssimple/documentmanager.cfg index e863e305643..a52837c5c06 100644 --- a/config-model/src/test/derived/annotationssimple/documentmanager.cfg +++ b/config-model/src/test/derived/annotationssimple/documentmanager.cfg @@ -1,3 +1,4 @@ +ignoreundefinedfields false enablecompression false usev8geopositions false doctype[].name "document" diff --git a/config-model/src/test/derived/annotationsstruct/documentmanager.cfg b/config-model/src/test/derived/annotationsstruct/documentmanager.cfg index 62084994721..4ab3f376d9d 100644 --- a/config-model/src/test/derived/annotationsstruct/documentmanager.cfg +++ b/config-model/src/test/derived/annotationsstruct/documentmanager.cfg @@ -1,3 +1,4 @@ +ignoreundefinedfields false enablecompression false usev8geopositions false doctype[].name "document" diff --git a/config-model/src/test/derived/annotationsstructarray/documentmanager.cfg b/config-model/src/test/derived/annotationsstructarray/documentmanager.cfg index 640655c53b6..c2078dfa671 100644 --- a/config-model/src/test/derived/annotationsstructarray/documentmanager.cfg +++ b/config-model/src/test/derived/annotationsstructarray/documentmanager.cfg @@ -1,3 +1,4 @@ +ignoreundefinedfields false enablecompression false usev8geopositions false doctype[].name "document" diff --git a/config-model/src/test/derived/arrays/documentmanager.cfg b/config-model/src/test/derived/arrays/documentmanager.cfg index 9bf53699140..836f3903079 100644 --- a/config-model/src/test/derived/arrays/documentmanager.cfg +++ b/config-model/src/test/derived/arrays/documentmanager.cfg @@ -1,3 +1,4 @@ +ignoreundefinedfields false enablecompression false usev8geopositions false doctype[].name "document" diff --git a/config-model/src/test/derived/attributeprefetch/documentmanager.cfg b/config-model/src/test/derived/attributeprefetch/documentmanager.cfg index 9d91ad3f5ab..a5c063108e4 100644 --- a/config-model/src/test/derived/attributeprefetch/documentmanager.cfg +++ b/config-model/src/test/derived/attributeprefetch/documentmanager.cfg @@ -1,3 +1,4 @@ +ignoreundefinedfields false enablecompression false usev8geopositions false doctype[].name "document" diff --git a/config-model/src/test/derived/complex/documentmanager.cfg b/config-model/src/test/derived/complex/documentmanager.cfg index da4f2fc0942..dd0b7095d93 100644 --- a/config-model/src/test/derived/complex/documentmanager.cfg +++ b/config-model/src/test/derived/complex/documentmanager.cfg @@ -1,3 +1,4 @@ +ignoreundefinedfields false enablecompression false usev8geopositions false doctype[].name "document" diff --git a/config-model/src/test/derived/declstruct/documentmanager.cfg b/config-model/src/test/derived/declstruct/documentmanager.cfg index 0286af0eade..992d210dbe2 100644 --- a/config-model/src/test/derived/declstruct/documentmanager.cfg +++ b/config-model/src/test/derived/declstruct/documentmanager.cfg @@ -1,3 +1,4 @@ +ignoreundefinedfields false enablecompression false usev8geopositions false doctype[].name "document" diff --git a/config-model/src/test/derived/duplicate_struct/documentmanager.cfg b/config-model/src/test/derived/duplicate_struct/documentmanager.cfg index bb791943d41..4742a75205a 100644 --- a/config-model/src/test/derived/duplicate_struct/documentmanager.cfg +++ b/config-model/src/test/derived/duplicate_struct/documentmanager.cfg @@ -1,3 +1,4 @@ +ignoreundefinedfields false enablecompression false usev8geopositions false doctype[].name "document" diff --git a/config-model/src/test/derived/duplicate_struct/documenttypes.cfg b/config-model/src/test/derived/duplicate_struct/documenttypes.cfg index 13567666674..45c1bd8700f 100644 --- a/config-model/src/test/derived/duplicate_struct/documenttypes.cfg +++ b/config-model/src/test/derived/duplicate_struct/documenttypes.cfg @@ -1,3 +1,4 @@ +ignoreundefinedfields false enablecompression false usev8geopositions false doctype[].name "document" diff --git a/config-model/src/test/derived/emptydefault/documentmanager.cfg b/config-model/src/test/derived/emptydefault/documentmanager.cfg index a6530d49507..bf2a39df89f 100644 --- a/config-model/src/test/derived/emptydefault/documentmanager.cfg +++ b/config-model/src/test/derived/emptydefault/documentmanager.cfg @@ -1,3 +1,4 @@ +ignoreundefinedfields false enablecompression false usev8geopositions false doctype[].name "document" diff --git a/config-model/src/test/derived/id/documentmanager.cfg b/config-model/src/test/derived/id/documentmanager.cfg index fafea7dd4bc..33cdbe5b996 100644 --- a/config-model/src/test/derived/id/documentmanager.cfg +++ b/config-model/src/test/derived/id/documentmanager.cfg @@ -1,3 +1,4 @@ +ignoreundefinedfields false enablecompression false usev8geopositions false doctype[].name "document" diff --git a/config-model/src/test/derived/imported_fields_inherited_reference/documenttypes.cfg b/config-model/src/test/derived/imported_fields_inherited_reference/documenttypes.cfg index b15734169a5..c6cd1a2949d 100644 --- a/config-model/src/test/derived/imported_fields_inherited_reference/documenttypes.cfg +++ b/config-model/src/test/derived/imported_fields_inherited_reference/documenttypes.cfg @@ -1,3 +1,4 @@ +ignoreundefinedfields false enablecompression false usev8geopositions false doctype[].name "document" diff --git a/config-model/src/test/derived/indexswitches/documentmanager.cfg b/config-model/src/test/derived/indexswitches/documentmanager.cfg index 7f6b9150e07..fa91cb0e554 100644 --- a/config-model/src/test/derived/indexswitches/documentmanager.cfg +++ b/config-model/src/test/derived/indexswitches/documentmanager.cfg @@ -1,3 +1,4 @@ +ignoreundefinedfields false enablecompression false usev8geopositions false doctype[].name "document" diff --git a/config-model/src/test/derived/inheritance/documentmanager.cfg b/config-model/src/test/derived/inheritance/documentmanager.cfg index f0917864ebd..52cac7bfa79 100644 --- a/config-model/src/test/derived/inheritance/documentmanager.cfg +++ b/config-model/src/test/derived/inheritance/documentmanager.cfg @@ -1,3 +1,4 @@ +ignoreundefinedfields false enablecompression false usev8geopositions false doctype[].name "document" diff --git a/config-model/src/test/derived/inheritdiamond/documentmanager.cfg b/config-model/src/test/derived/inheritdiamond/documentmanager.cfg index 10fdcf50026..7d5dacbe00f 100644 --- a/config-model/src/test/derived/inheritdiamond/documentmanager.cfg +++ b/config-model/src/test/derived/inheritdiamond/documentmanager.cfg @@ -1,3 +1,4 @@ +ignoreundefinedfields false enablecompression false usev8geopositions false doctype[].name "document" diff --git a/config-model/src/test/derived/inheritfromgrandparent/documentmanager.cfg b/config-model/src/test/derived/inheritfromgrandparent/documentmanager.cfg index 8c0ffd50840..537c452c38c 100644 --- a/config-model/src/test/derived/inheritfromgrandparent/documentmanager.cfg +++ b/config-model/src/test/derived/inheritfromgrandparent/documentmanager.cfg @@ -1,3 +1,4 @@ +ignoreundefinedfields false enablecompression false usev8geopositions false doctype[].name "document" diff --git a/config-model/src/test/derived/inheritfromparent/documentmanager.cfg b/config-model/src/test/derived/inheritfromparent/documentmanager.cfg index 186f3c0e3c1..d246e886a3d 100644 --- a/config-model/src/test/derived/inheritfromparent/documentmanager.cfg +++ b/config-model/src/test/derived/inheritfromparent/documentmanager.cfg @@ -1,3 +1,4 @@ +ignoreundefinedfields false enablecompression false usev8geopositions false doctype[].name "document" diff --git a/config-model/src/test/derived/inheritfromparent/documenttypes.cfg b/config-model/src/test/derived/inheritfromparent/documenttypes.cfg index e8fd97671ff..efd8170d95e 100644 --- a/config-model/src/test/derived/inheritfromparent/documenttypes.cfg +++ b/config-model/src/test/derived/inheritfromparent/documenttypes.cfg @@ -1,3 +1,4 @@ +ignoreundefinedfields false enablecompression false usev8geopositions false doctype[].name "document" diff --git a/config-model/src/test/derived/multi_struct/documentmanager.cfg b/config-model/src/test/derived/multi_struct/documentmanager.cfg index dbf753c6bc3..e37a3dc51c6 100644 --- a/config-model/src/test/derived/multi_struct/documentmanager.cfg +++ b/config-model/src/test/derived/multi_struct/documentmanager.cfg @@ -1,3 +1,4 @@ +ignoreundefinedfields false enablecompression false usev8geopositions false doctype[].name "document" diff --git a/config-model/src/test/derived/multi_struct/documenttypes.cfg b/config-model/src/test/derived/multi_struct/documenttypes.cfg index 9ce19079177..93452602f86 100644 --- a/config-model/src/test/derived/multi_struct/documenttypes.cfg +++ b/config-model/src/test/derived/multi_struct/documenttypes.cfg @@ -1,3 +1,4 @@ +ignoreundefinedfields false enablecompression false usev8geopositions false doctype[].name "document" diff --git a/config-model/src/test/derived/namecollision/documentmanager.cfg b/config-model/src/test/derived/namecollision/documentmanager.cfg index 73730595574..d8cf44a9a3d 100644 --- a/config-model/src/test/derived/namecollision/documentmanager.cfg +++ b/config-model/src/test/derived/namecollision/documentmanager.cfg @@ -1,3 +1,4 @@ +ignoreundefinedfields false enablecompression false usev8geopositions false doctype[].name "document" diff --git a/config-model/src/test/derived/prefixexactattribute/documentmanager.cfg b/config-model/src/test/derived/prefixexactattribute/documentmanager.cfg index be048ee2eba..d516eaf7886 100644 --- a/config-model/src/test/derived/prefixexactattribute/documentmanager.cfg +++ b/config-model/src/test/derived/prefixexactattribute/documentmanager.cfg @@ -1,3 +1,4 @@ +ignoreundefinedfields false enablecompression false usev8geopositions false doctype[].name "document" diff --git a/config-model/src/test/derived/ranktypes/documentmanager.cfg b/config-model/src/test/derived/ranktypes/documentmanager.cfg index 33d41084651..46457fb479d 100644 --- a/config-model/src/test/derived/ranktypes/documentmanager.cfg +++ b/config-model/src/test/derived/ranktypes/documentmanager.cfg @@ -1,3 +1,4 @@ +ignoreundefinedfields false enablecompression false usev8geopositions false doctype[].name "document" diff --git a/config-model/src/test/derived/reference_from_several/documentmanager.cfg b/config-model/src/test/derived/reference_from_several/documentmanager.cfg index 6ac1aab0baf..28f40aeee5b 100644 --- a/config-model/src/test/derived/reference_from_several/documentmanager.cfg +++ b/config-model/src/test/derived/reference_from_several/documentmanager.cfg @@ -1,3 +1,4 @@ +ignoreundefinedfields false enablecompression false usev8geopositions false doctype[].name "document" diff --git a/config-model/src/test/derived/schemainheritance/documentmanager.cfg b/config-model/src/test/derived/schemainheritance/documentmanager.cfg index 12c29667079..1fe61cf2bd2 100644 --- a/config-model/src/test/derived/schemainheritance/documentmanager.cfg +++ b/config-model/src/test/derived/schemainheritance/documentmanager.cfg @@ -1,3 +1,4 @@ +ignoreundefinedfields false enablecompression false usev8geopositions false doctype[].name "document" diff --git a/config-model/src/test/derived/streamingstruct/documentmanager.cfg b/config-model/src/test/derived/streamingstruct/documentmanager.cfg index 81de2d7ebdb..b94f23a9c7b 100644 --- a/config-model/src/test/derived/streamingstruct/documentmanager.cfg +++ b/config-model/src/test/derived/streamingstruct/documentmanager.cfg @@ -1,3 +1,4 @@ +ignoreundefinedfields false enablecompression false usev8geopositions false doctype[].name "document" diff --git a/config-model/src/test/derived/structandfieldset/documentmanager.cfg b/config-model/src/test/derived/structandfieldset/documentmanager.cfg index 85df5249e3a..e1169e3ca5d 100644 --- a/config-model/src/test/derived/structandfieldset/documentmanager.cfg +++ b/config-model/src/test/derived/structandfieldset/documentmanager.cfg @@ -1,3 +1,4 @@ +ignoreundefinedfields false enablecompression false usev8geopositions false doctype[].name "document" diff --git a/config-model/src/test/derived/structanyorder/documentmanager.cfg b/config-model/src/test/derived/structanyorder/documentmanager.cfg index b3b6a2587c1..eac63515944 100644 --- a/config-model/src/test/derived/structanyorder/documentmanager.cfg +++ b/config-model/src/test/derived/structanyorder/documentmanager.cfg @@ -1,3 +1,4 @@ +ignoreundefinedfields false enablecompression false usev8geopositions false doctype[].name "document" diff --git a/config-model/src/test/derived/structinheritance/documentmanager.cfg b/config-model/src/test/derived/structinheritance/documentmanager.cfg index ca11481afa4..37240887e3b 100644 --- a/config-model/src/test/derived/structinheritance/documentmanager.cfg +++ b/config-model/src/test/derived/structinheritance/documentmanager.cfg @@ -1,3 +1,4 @@ +ignoreundefinedfields false enablecompression false usev8geopositions false doctype[].name "document" diff --git a/config-model/src/test/derived/structinheritance/documenttypes.cfg b/config-model/src/test/derived/structinheritance/documenttypes.cfg index 8b343665289..16521b920a7 100644 --- a/config-model/src/test/derived/structinheritance/documenttypes.cfg +++ b/config-model/src/test/derived/structinheritance/documenttypes.cfg @@ -1,3 +1,4 @@ +ignoreundefinedfields false enablecompression false usev8geopositions false doctype[].name "document" diff --git a/config-model/src/test/derived/tensor/documentmanager.cfg b/config-model/src/test/derived/tensor/documentmanager.cfg index d11c67fea01..f52fe073208 100644 --- a/config-model/src/test/derived/tensor/documentmanager.cfg +++ b/config-model/src/test/derived/tensor/documentmanager.cfg @@ -1,3 +1,4 @@ +ignoreundefinedfields false enablecompression false usev8geopositions false doctype[].name "document" diff --git a/config-model/src/test/derived/tensor/documenttypes.cfg b/config-model/src/test/derived/tensor/documenttypes.cfg index 9ee6a82245f..3081a5bd0c4 100644 --- a/config-model/src/test/derived/tensor/documenttypes.cfg +++ b/config-model/src/test/derived/tensor/documenttypes.cfg @@ -1,3 +1,4 @@ +ignoreundefinedfields false enablecompression false usev8geopositions false doctype[].name "document" diff --git a/config-model/src/test/derived/types/documentmanager.cfg b/config-model/src/test/derived/types/documentmanager.cfg index 9a73664ac86..118f7d279e6 100644 --- a/config-model/src/test/derived/types/documentmanager.cfg +++ b/config-model/src/test/derived/types/documentmanager.cfg @@ -1,3 +1,4 @@ +ignoreundefinedfields false enablecompression false usev8geopositions false doctype[].name "document" diff --git a/config-model/src/test/examples/fieldoftypedocument-doctypes.cfg b/config-model/src/test/examples/fieldoftypedocument-doctypes.cfg index ea56800ea1c..2efc2f40d21 100644 --- a/config-model/src/test/examples/fieldoftypedocument-doctypes.cfg +++ b/config-model/src/test/examples/fieldoftypedocument-doctypes.cfg @@ -1,3 +1,4 @@ +ignoreundefinedfields false enablecompression false usev8geopositions false doctype[0].name "document" diff --git a/config-model/src/test/examples/fieldoftypedocument.cfg b/config-model/src/test/examples/fieldoftypedocument.cfg index b59b3206a2d..10c66ce3e93 100644 --- a/config-model/src/test/examples/fieldoftypedocument.cfg +++ b/config-model/src/test/examples/fieldoftypedocument.cfg @@ -1,3 +1,4 @@ +ignoreundefinedfields false enablecompression false usev8geopositions false doctype[0].name "document" diff --git a/config-model/src/test/examples/structresult.cfg b/config-model/src/test/examples/structresult.cfg index 34383084625..2e3904b7110 100644 --- a/config-model/src/test/examples/structresult.cfg +++ b/config-model/src/test/examples/structresult.cfg @@ -1,3 +1,4 @@ +ignoreundefinedfields false enablecompression false usev8geopositions false doctype[0].name "document" diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerDocumentApiBuilderTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerDocumentApiBuilderTest.java index b4242336c5c..ca0b4681e51 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerDocumentApiBuilderTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerDocumentApiBuilderTest.java @@ -5,7 +5,9 @@ import com.yahoo.config.model.builder.xml.test.DomBuilderTest; import com.yahoo.config.model.test.MockApplicationPackage; import com.yahoo.config.model.test.MockRoot; import com.yahoo.container.handler.threadpool.ContainerThreadpoolConfig; +import com.yahoo.document.config.DocumentmanagerConfig; import com.yahoo.vespa.model.container.ContainerCluster; +import com.yahoo.vespa.model.container.ContainerModel; import com.yahoo.vespa.model.container.component.Handler; import com.yahoo.vespa.model.container.component.SystemBindingPattern; import com.yahoo.vespa.model.container.component.UserBindingPattern; @@ -63,7 +65,7 @@ public class ContainerDocumentApiBuilderTest extends ContainerModelBuilderTestBa } @Test - public void requireThatHandlersAreSetup() { + public void test_handler_setup() { Element elem = DomBuilderTest.parse( "", " ", @@ -85,6 +87,20 @@ public class ContainerDocumentApiBuilderTest extends ContainerModelBuilderTestBa assertEquals(2, handlerMap.get("com.yahoo.vespa.http.server.FeedHandler").getServerBindings().size()); } + @Test + public void nonexisting_fields_can_be_ignored() { + Element elem = DomBuilderTest.parse( + "", + " ", + nodesXml, + ""); + ContainerModel model = createModel(root, elem).get(0); + + var documentManager = new DocumentmanagerConfig.Builder(); + model.getCluster().getConfig(documentManager); + assertTrue(documentManager.build().ignoreundefinedfields()); + } + @Test public void feeding_api_have_separate_threadpools() { Element elem = DomBuilderTest.parse( diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilderTestBase.java b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilderTestBase.java index cfe4b72f37d..7e8852ce85a 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilderTestBase.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilderTestBase.java @@ -56,18 +56,21 @@ public abstract class ContainerModelBuilderTestBase { createModel(root, clusterElem); } - public static void createModel(MockRoot root, DeployState deployState, VespaModel vespaModel, Element... containerElems) { + public static List createModel(MockRoot root, DeployState deployState, VespaModel vespaModel, Element... containerElems) { + List containerModels = new ArrayList<>(); for (Element containerElem : containerElems) { ContainerModel model = new ContainerModelBuilder(false, ContainerModelBuilder.Networking.enable) .build(deployState, vespaModel, null, root, containerElem); ContainerCluster cluster = model.getCluster(); generateDefaultSearchChains(cluster); + containerModels.add(model); } root.freezeModelTopology(); + return containerModels; } - public static void createModel(MockRoot root, Element... containerElems) { - createModel(root, DeployState.createTestState(), null, containerElems); + public static List createModel(MockRoot root, Element... containerElems) { + return createModel(root, DeployState.createTestState(), null, containerElems); } public static void createModel(MockRoot root, DeployLogger testLogger, Element... containerElems) { -- cgit v1.2.3