diff --git a/src/main/java/com/fasterxml/jackson/databind/SerializerProvider.java b/src/main/java/com/fasterxml/jackson/databind/SerializerProvider.java index fa299b49dd..11a4109a91 100644 --- a/src/main/java/com/fasterxml/jackson/databind/SerializerProvider.java +++ b/src/main/java/com/fasterxml/jackson/databind/SerializerProvider.java @@ -1380,6 +1380,10 @@ protected JsonSerializer _createUntypedSerializer(JavaType type) * since there's one instance per serialization). * Perhaps not-yet-resolved instance might be exposed too early to callers. */ + // 13-Apr-2018, tatu: Problem does NOT occur any more with late 2.8.x and 2.9.x + // versions, likely due to concurrency fixes for `AnnotatedClass` introspection. + // This sync block could probably be removed; but to minimize any risk of + // regression sync block will only be removed from 3.0. synchronized (_serializerCache) { // 17-Feb-2013, tatu: Used to call deprecated method (that passed property) return (JsonSerializer)_serializerFactory.createSerializer(this, type); diff --git a/src/test/java/com/fasterxml/jackson/databind/misc/RaceCondition738Test.java b/src/test/java/com/fasterxml/jackson/databind/misc/RaceCondition738Test.java index 171ee8549f..bb5bb348ca 100644 --- a/src/test/java/com/fasterxml/jackson/databind/misc/RaceCondition738Test.java +++ b/src/test/java/com/fasterxml/jackson/databind/misc/RaceCondition738Test.java @@ -56,7 +56,7 @@ public HasSubTypes getHasSubTypes() { */ public void testRepeatedly() throws Exception { - final int COUNT = 2000; + final int COUNT = 3000; for (int i = 0; i < COUNT; i++) { runOnce(i, COUNT); }