Skip to content

Commit

Permalink
Disable Jackson field name interning (#2583)
Browse files Browse the repository at this point in the history
Interning introduces excessive contention
  • Loading branch information
schlosna committed Apr 4, 2023
1 parent add558f commit 9a1d9e1
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 2 deletions.
5 changes: 5 additions & 0 deletions changelog/@unreleased/pr-2583.v2.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
type: improvement
improvement:
description: Interning introduces excessive contention
links:
- https://github.com/palantir/conjure-java-runtime/pull/2583
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@

package com.palantir.conjure.java.serialization;

import com.fasterxml.jackson.core.JsonFactory;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.MapperFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
Expand Down Expand Up @@ -46,7 +47,7 @@ private ObjectMappers() {}
* </ul>
*/
public static JsonMapper newClientJsonMapper() {
return withDefaultModules(JsonMapper.builder(new InstrumentedJsonFactory()))
return withDefaultModules(JsonMapper.builder(jsonFactory()))
.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)
.build();
}
Expand Down Expand Up @@ -92,7 +93,7 @@ public static SmileMapper newClientSmileMapper() {
* </ul>
*/
public static JsonMapper newServerJsonMapper() {
return withDefaultModules(JsonMapper.builder(new InstrumentedJsonFactory()))
return withDefaultModules(JsonMapper.builder(jsonFactory()))
.enable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)
.build();
}
Expand Down Expand Up @@ -220,9 +221,18 @@ public static ObjectMapper withDefaultModules(ObjectMapper mapper) {
.disable(DeserializationFeature.ACCEPT_FLOAT_AS_INT);
}

private static JsonFactory jsonFactory() {
JsonFactory jsonFactory = new InstrumentedJsonFactory();
// Interning introduces excessive contention https://github.com/FasterXML/jackson-core/issues/946
jsonFactory.disable(JsonFactory.Feature.INTERN_FIELD_NAMES);
return jsonFactory;
}

private static SmileFactory smileFactory() {
return InstrumentedSmileFactory.builder()
.disable(SmileGenerator.Feature.ENCODE_BINARY_AS_7BIT)
// Interning introduces excessive contention https://github.com/FasterXML/jackson-core/issues/946
.disable(JsonFactory.Feature.INTERN_FIELD_NAMES)
.build();
}
}

0 comments on commit 9a1d9e1

Please sign in to comment.