Skip to content

Commit a6d1a47

Browse files
committed
Avoid type cache pollution issues
1 parent 2cdb4f2 commit a6d1a47

File tree

1 file changed

+12
-3
lines changed

1 file changed

+12
-3
lines changed

hibernate-reactive-core/src/main/java/org/hibernate/reactive/loader/ReactiveLoader.java

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,16 @@
1010
import org.hibernate.dialect.pagination.LimitHandler;
1111
import org.hibernate.dialect.pagination.LimitHelper;
1212
import org.hibernate.dialect.pagination.NoopLimitHandler;
13-
import org.hibernate.engine.spi.*;
13+
import org.hibernate.engine.spi.PersistenceContext;
14+
import org.hibernate.engine.spi.QueryParameters;
15+
import org.hibernate.engine.spi.RowSelection;
16+
import org.hibernate.engine.spi.SessionFactoryImplementor;
17+
import org.hibernate.engine.spi.SharedSessionContractImplementor;
1418
import org.hibernate.loader.spi.AfterLoadAction;
1519
import org.hibernate.reactive.adaptor.impl.QueryParametersAdaptor;
1620
import org.hibernate.reactive.engine.impl.ReactivePersistenceContextAdapter;
1721
import org.hibernate.reactive.pool.impl.Parameters;
18-
import org.hibernate.reactive.session.ReactiveConnectionSupplier;
22+
import org.hibernate.reactive.session.ReactiveQueryExecutor;
1923
import org.hibernate.transform.ResultTransformer;
2024

2125
import java.sql.ResultSet;
@@ -124,7 +128,12 @@ else if ( LimitHelper.useLimit( limitHandler, queryParameters.getRowSelection()
124128
sql = parameters().processLimit( sql, parameterArray, LimitHelper.hasFirstRow( queryParameters.getRowSelection() ) );
125129
}
126130

127-
return ((ReactiveConnectionSupplier) session).getReactiveConnection()
131+
//N.B. performance trap: always try to cast to ReactiveQueryExecutor even when only needing a ReactiveConnectionSupplier
132+
//as we otherwise trigger a strong scalability issue.
133+
//See also:
134+
// - https://bugs.openjdk.org/browse/JDK-8180450
135+
// - https://github.com/hibernate/hibernate-reactive/issues/1399
136+
return ((ReactiveQueryExecutor) session).getReactiveConnection()
128137
.selectJdbc( sql, parameterArray );
129138
}
130139

0 commit comments

Comments
 (0)