Skip to content

Commit fbdec58

Browse files
obourgainbeikov
authored andcommitted
HHH-18475 fix race condition in AbstractRowMapper
1 parent 30241bb commit fbdec58

File tree

1 file changed

+3
-2
lines changed

1 file changed

+3
-2
lines changed

hibernate-core/src/main/java/org/hibernate/loader/plan/exec/process/internal/AbstractRowReader.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ public abstract class AbstractRowReader implements RowReader {
5050

5151
// cache map for looking up EntityReferenceInitializer by EntityReference to help with resolving
5252
// bidirectional EntityReference and fetches.
53-
private Map<EntityReference,EntityReferenceInitializer> entityInitializerByEntityReference;
53+
private volatile Map<EntityReference,EntityReferenceInitializer> entityInitializerByEntityReference;
5454

5555
public AbstractRowReader(ReaderCollector readerCollector) {
5656
this.entityReferenceInitializers = readerCollector.getEntityReferenceInitializers().toArray( EMPTY_REFERENCE_INITIALIZERS );
@@ -149,13 +149,14 @@ else if ( CompositeFetch.class.isInstance( fetch ) ) {
149149

150150
private EntityReferenceInitializer getInitializerByEntityReference(EntityReference targetEntityReference) {
151151
if ( entityInitializerByEntityReference == null ) {
152-
entityInitializerByEntityReference = new HashMap<>( entityReferenceInitializers.length );
152+
Map<EntityReference,EntityReferenceInitializer> entityInitializerByEntityReference = new HashMap<>( entityReferenceInitializers.length );
153153
for ( EntityReferenceInitializer entityReferenceInitializer : entityReferenceInitializers ) {
154154
entityInitializerByEntityReference.put(
155155
entityReferenceInitializer.getEntityReference(),
156156
entityReferenceInitializer
157157
);
158158
}
159+
this.entityInitializerByEntityReference = entityInitializerByEntityReference;
159160
}
160161
return entityInitializerByEntityReference.get(
161162
targetEntityReference

0 commit comments

Comments
 (0)