Skip to content

Commit 097a3a5

Browse files
committed
Update x-content jackson version to 2.21.0 (elastic#141777)
Closes elastic#141442
1 parent 292699d commit 097a3a5

File tree

7 files changed

+49
-7
lines changed

7 files changed

+49
-7
lines changed

docs/reference/query-languages/esql/kibana/definition/functions/reverse.json

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

gradle/verification-metadata.xml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -337,6 +337,11 @@
337337
<sha256 value="721a189241dab0525d9e858e5cb604d3ecc0ede081e2de77d6f34fa5779a5b46" origin="Generated by Gradle"/>
338338
</artifact>
339339
</component>
340+
<component group="com.fasterxml.jackson.core" name="jackson-core" version="2.21.0">
341+
<artifact name="jackson-core-2.21.0.jar">
342+
<sha256 value="e22604bcd9b24e462d5df102007cb06e1ed811e86f1ce6081ca62f385f2db87b" origin="Generated by Gradle"/>
343+
</artifact>
344+
</component>
340345
<component group="com.fasterxml.jackson.core" name="jackson-databind" version="2.10.5.1">
341346
<artifact name="jackson-databind-2.10.5.1.jar">
342347
<sha256 value="f93db83891a53e8d268e2cc8fcd88ead2981edc2163e35c2a52c88d9ab57b4a0" origin="Generated by Gradle"/>
@@ -377,6 +382,11 @@
377382
<sha256 value="1d7dc634ba3d7981d7017f4f44d43cf371e922c80028b4eb3e5374ce6546d5f6" origin="Generated by Gradle"/>
378383
</artifact>
379384
</component>
385+
<component group="com.fasterxml.jackson.dataformat" name="jackson-dataformat-cbor" version="2.21.0">
386+
<artifact name="jackson-dataformat-cbor-2.21.0.jar">
387+
<sha256 value="79a579275cb0dd5847406930a58ce8a49d06db7815bba38a0d4a6ae1db3fb043" origin="Generated by Gradle"/>
388+
</artifact>
389+
</component>
380390
<component group="com.fasterxml.jackson.dataformat" name="jackson-dataformat-smile" version="2.14.2">
381391
<artifact name="jackson-dataformat-smile-2.14.2.jar">
382392
<sha256 value="9c279bb29770de09289c14cf8862dd195112687cd7fde815919f54a9157ce213" origin="Generated by Gradle"/>
@@ -397,6 +407,11 @@
397407
<sha256 value="120b07ad7b7b9097d9a174ab6176e07b6409fb7af3f63fcf3d7147c053be0d29" origin="Generated by Gradle"/>
398408
</artifact>
399409
</component>
410+
<component group="com.fasterxml.jackson.dataformat" name="jackson-dataformat-smile" version="2.21.0">
411+
<artifact name="jackson-dataformat-smile-2.21.0.jar">
412+
<sha256 value="f82f7f014a371e08b62c33586e5e4f0781894e5e47066c8e073684720a770d24" origin="Generated by Gradle"/>
413+
</artifact>
414+
</component>
400415
<component group="com.fasterxml.jackson.dataformat" name="jackson-dataformat-xml" version="2.15.0">
401416
<artifact name="jackson-dataformat-xml-2.15.0.jar">
402417
<sha256 value="e3137c89b08d0c3d9f7dfeae11d5b941b310f5f7bfdea90063f29c0b3b1f6807" origin="Generated by Gradle"/>
@@ -422,6 +437,11 @@
422437
<sha256 value="941bcd8b1381bb3b0d726fab41624fa8ece0ee7b6cf2860ad95e8157ce673376" origin="Generated by Gradle"/>
423438
</artifact>
424439
</component>
440+
<component group="com.fasterxml.jackson.dataformat" name="jackson-dataformat-yaml" version="2.21.0">
441+
<artifact name="jackson-dataformat-yaml-2.21.0.jar">
442+
<sha256 value="5d184579144780c38962a5f475ed2485e8a29f36cc59ca237135b19e9b642420" origin="Generated by Gradle"/>
443+
</artifact>
444+
</component>
425445
<component group="com.fasterxml.jackson.datatype" name="jackson-datatype-jsr310" version="2.15.0">
426446
<artifact name="jackson-datatype-jsr310-2.15.0.jar">
427447
<sha256 value="d5deb92d59668a8de0ac8da818d5d9c0fdfb4db6b2f1d66a779fe357f310d648" origin="Generated by Gradle"/>

libs/x-content/impl/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ base {
1313
archivesName = "x-content-impl"
1414
}
1515

16-
String jacksonVersion = "2.17.2"
16+
String jacksonVersion = "2.21.0"
1717

1818
dependencies {
1919
compileOnly project(':libs:core')

libs/x-content/impl/src/main/java/org/elasticsearch/xcontent/provider/json/JsonXContentImpl.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import com.fasterxml.jackson.core.JsonFactory;
1414
import com.fasterxml.jackson.core.JsonGenerator;
1515
import com.fasterxml.jackson.core.JsonParser;
16+
import com.fasterxml.jackson.core.json.JsonWriteFeature;
1617

1718
import org.elasticsearch.xcontent.XContent;
1819
import org.elasticsearch.xcontent.XContentBuilder;
@@ -48,7 +49,7 @@ public static final XContent jsonXContent() {
4849
}
4950

5051
static {
51-
jsonFactory = XContentImplUtils.configure(new ESJsonFactoryBuilder());
52+
jsonFactory = XContentImplUtils.configure(new ESJsonFactoryBuilder().enable(JsonWriteFeature.COMBINE_UNICODE_SURROGATES_IN_UTF8));
5253
jsonFactory.configure(JsonGenerator.Feature.QUOTE_FIELD_NAMES, true);
5354
jsonFactory.configure(JsonParser.Feature.ALLOW_COMMENTS, true);
5455
jsonFactory.configure(JsonFactory.Feature.FAIL_ON_SYMBOL_HASH_OVERFLOW, false); // this trips on many mappings now...

server/src/main/java/org/elasticsearch/action/search/MultiSearchRequest.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -272,7 +272,9 @@ public static void readMultiLineFormat(
272272
)
273273
) {
274274
Map<String, Object> source = parser.map();
275-
if (parser.nextToken() != null) {
275+
// In Jackson 2.21+, parser.map() may leave the parser past END_OBJECT
276+
// Only check for extra tokens if we're still positioned in the stream
277+
if (parser.currentToken() != null && parser.nextToken() != null) {
276278
throw new XContentParseException(parser.getTokenLocation(), "Unexpected token after end of object");
277279
}
278280
Object expandWildcards = null;
@@ -360,7 +362,9 @@ public static void readMultiLineFormat(
360362
)
361363
) {
362364
consumer.accept(searchRequest, parser);
363-
if (parser.nextToken() != null) {
365+
// In Jackson 2.21+, after parsing, the parser may be past END_OBJECT
366+
// Only check for extra tokens if we're still positioned in the stream
367+
if (parser.currentToken() != null && parser.nextToken() != null) {
364368
throw new XContentParseException(parser.getTokenLocation(), "Unexpected token after end of object");
365369
}
366370
}

server/src/test/java/org/elasticsearch/action/search/MultiSearchRequestTests.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -546,11 +546,12 @@ public void testFailOnExtraCharacters() throws IOException {
546546
""");
547547
fail("should have caught second line; extra closing brackets");
548548
} catch (XContentParseException e) {
549+
// Jackson 2.21.0 changed the error message format
549550
assertThat(
550551
e.getMessage(),
551552
containsString(
552-
"Unexpected close marker '}': expected ']' (for root starting at "
553-
+ "[Source: (byte[])\"{ \"query\": {\"match_all\": {}}}}}}different error message\""
553+
"Unexpected close marker '}': no open Object to close\n"
554+
+ " at [Source: (byte[])\"{ \"query\": {\"match_all\": {}}}}}}different error message\""
554555
)
555556
);
556557
}

test/framework/src/main/java/org/elasticsearch/datageneration/datasource/DefaultObjectGenerationHandler.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,10 +74,26 @@ public String generateFieldName() {
7474
if (fieldName.startsWith(RESERVED_FIELD_NAME_PREFIX)) {
7575
continue;
7676
}
77+
// Filter out Unicode surrogates to avoid encoding differences with
78+
// JsonWriteFeature.COMBINE_UNICODE_SURROGATES_IN_UTF8 in Jackson 2.21.0+
79+
if (containsSurrogates(fieldName)) {
80+
continue;
81+
}
7782

7883
return fieldName;
7984
}
8085
}
86+
87+
private boolean containsSurrogates(String str) {
88+
for (int i = 0; i < str.length(); i++) {
89+
char c = str.charAt(i);
90+
// Check for high surrogates (U+D800 to U+DBFF) or low surrogates (U+DC00 to U+DFFF)
91+
if (Character.isSurrogate(c)) {
92+
return true;
93+
}
94+
}
95+
return false;
96+
}
8197
}
8298

8399
@Override

0 commit comments

Comments
 (0)