From 046f0408d168e300556e4c3450849afcdae96356 Mon Sep 17 00:00:00 2001 From: Mikael Klamra Date: Wed, 23 Mar 2016 17:02:09 +0100 Subject: [PATCH] =?UTF-8?q?DATACMNS-831=20-=20AbstractMappingContext.addPe?= =?UTF-8?q?rsistentEntity(=E2=80=A6)=20now=20acquires=20necessary=20read?= =?UTF-8?q?=20lock.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The lookup for already available PersistentEntity instances now acquires a read lock to shield the execution from partially equipped PersistentEntity instances currently in creation from another thread. Original pull request: #157. --- .../mapping/context/AbstractMappingContext.java | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/springframework/data/mapping/context/AbstractMappingContext.java b/src/main/java/org/springframework/data/mapping/context/AbstractMappingContext.java index a74a7224b..896aaf874 100644 --- a/src/main/java/org/springframework/data/mapping/context/AbstractMappingContext.java +++ b/src/main/java/org/springframework/data/mapping/context/AbstractMappingContext.java @@ -288,11 +288,16 @@ public abstract class AbstractMappingContext typeInformation) { + + try { + read.lock(); + E persistentEntity = persistentEntities.get(typeInformation); - E persistentEntity = persistentEntities.get(typeInformation); - - if (persistentEntity != null) { - return persistentEntity; + if (persistentEntity != null) { + return persistentEntity; + } + } finally { + read.unlock(); } Class type = typeInformation.getType();