From 6ed2565971b71b125b7480a40d6953cfd403d607 Mon Sep 17 00:00:00 2001 From: Ryan Ernst Date: Mon, 14 Apr 2025 14:42:38 -0700 Subject: [PATCH 1/2] Workaround max name limit imposed by Jackson 2.17 In Jackson 2.15 a maximum string length of 50k characters was introduced. We worked around that by override the length to max int on all parsers created by xcontent. Jackson 2.17 introduced a similar limit on field names. This commit mimics the workaround for string length by overriding the max name length to be unlimited. relates #58952 --- .../elasticsearch/xcontent/provider/XContentImplUtils.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/libs/x-content/impl/src/main/java/org/elasticsearch/xcontent/provider/XContentImplUtils.java b/libs/x-content/impl/src/main/java/org/elasticsearch/xcontent/provider/XContentImplUtils.java index 558aafa34bac9..5433c9071d681 100644 --- a/libs/x-content/impl/src/main/java/org/elasticsearch/xcontent/provider/XContentImplUtils.java +++ b/libs/x-content/impl/src/main/java/org/elasticsearch/xcontent/provider/XContentImplUtils.java @@ -17,6 +17,10 @@ public class XContentImplUtils { public static > F configure(TSFBuilder builder) { // jackson 2.15 introduced a max string length. We have other limits in place to constrain max doc size, // so here we set to max value (2GiB) so as not to constrain further than those existing limits. - return builder.streamReadConstraints(StreamReadConstraints.builder().maxStringLength(Integer.MAX_VALUE).build()).build(); + // jackson 2.16 further introduced a max name length, which we also relax here temporarily. + // see https://github.com/elastic/elasticsearch/issues/58952 + return builder.streamReadConstraints( + StreamReadConstraints.builder().maxStringLength(Integer.MAX_VALUE).maxNameLength(Integer.MAX_VALUE).build() + ).build(); } } From ea9bf5d58fda45775f2d0afd6fe1ed742f42c833 Mon Sep 17 00:00:00 2001 From: Ryan Ernst Date: Mon, 14 Apr 2025 14:46:37 -0700 Subject: [PATCH 2/2] Update docs/changelog/126806.yaml --- docs/changelog/126806.yaml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 docs/changelog/126806.yaml diff --git a/docs/changelog/126806.yaml b/docs/changelog/126806.yaml new file mode 100644 index 0000000000000..cdc9d97d750cc --- /dev/null +++ b/docs/changelog/126806.yaml @@ -0,0 +1,5 @@ +pr: 126806 +summary: Workaround max name limit imposed by Jackson 2.17 +area: Infra/Core +type: bug +issues: []