-
Notifications
You must be signed in to change notification settings - Fork 24.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ITV2: disallow duplicate dynamic templates #56291
Conversation
Dynamic templates can contain multiple templates with the same name. This commit changes the way V2 index templates mappings are resolved to add deduplication of dynamic templates when resolving the mappings, by having the last dynamic templates override the ones defined with the same name earlier in the `dynamic_templates` array.
Pinging @elastic/es-core-features (:Core/Features/Indices APIs) |
@andreidan can you add a test that component templates merge their dynamic templates correctly? I think because we merge the XContent maps prior to the dedupe it is possible to end up with an invalid dynamic template if you have two component templates that each define a dynamic template with the same name but different configurations that, when merged, make the template invalid. |
@dakrone thanks for the suggestion on the component templates merging. Great shout on testing that as you were right and we are merging the Maps so, even though we dedup the key names (ie. there will only be one |
This filters duplicate dynamic templates when merging different component templates that specify the same dynamic template and when merging the mappings specified in the request with the ones in the index template.
@elasticmachine update branch |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I left a couple of comments similar to what we talked about regarding naming, thanks for doing this Andrei!
server/src/main/java/org/elasticsearch/cluster/metadata/MetadataCreateIndexService.java
Outdated
Show resolved
Hide resolved
server/src/main/java/org/elasticsearch/cluster/metadata/MetadataCreateIndexService.java
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM, thanks for working on this Andrei!
Dynamic templates can contain multiple templates with the same name. This commit changes the way V2 index templates mappings are resolved to add deduplication of dynamic templates when resolving the mappings, by having the last dynamic templates override the ones defined with the same name earlier in the `dynamic_templates` array. This also filters duplicate dynamic templates when merging different component templates that specify the same dynamic template and when merging the mappings specified in the request with the ones in the index template. (cherry picked from commit eb4a557) Signed-off-by: Andrei Dan <[email protected]>
Dynamic templates can contain multiple templates with the same name. This commit changes the way V2 index templates mappings are resolved to add deduplication of dynamic templates when resolving the mappings, by having the last dynamic templates override the ones defined with the same name earlier in the `dynamic_templates` array. This also filters duplicate dynamic templates when merging different component templates that specify the same dynamic template and when merging the mappings specified in the request with the ones in the index template. (cherry picked from commit eb4a557) Signed-off-by: Andrei Dan <[email protected]>
Dynamic templates can contain multiple templates with the same name. This
commit changes the way V2 index templates mappings are resolved to add
deduplication of dynamic templates when resolving the mappings, by having
the last dynamic templates override the ones defined with the same name
earlier in the
dynamic_templates
array.Relates to #53101
Relates to #53326
Relates to #28988