Skip to content

Commit 02acad3

Browse files
committed
HHH-19655 Fix connection leak with PhysicalConnectionHandlingMode.IMMEDIATE_ACQUISITION_AND_HOLD
1 parent e320ecd commit 02acad3

File tree

1 file changed

+7
-5
lines changed

1 file changed

+7
-5
lines changed

hibernate-core/src/main/java/org/hibernate/engine/jdbc/env/internal/JdbcEnvironmentInitiator.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -345,13 +345,11 @@ protected JdbcEnvironmentImpl getJdbcEnvironmentUsingJdbcMetadata(
345345
new SqlExceptionHelper( false ),
346346
registry
347347
);
348-
temporaryJdbcSessionOwner.transactionCoordinator = registry.requireService( TransactionCoordinatorBuilder.class )
349-
.buildTransactionCoordinator(
350-
new JdbcCoordinatorImpl( null, temporaryJdbcSessionOwner, jdbcServices ),
351-
() -> false
352-
);
348+
final JdbcCoordinatorImpl jdbcCoordinator = new JdbcCoordinatorImpl( null, temporaryJdbcSessionOwner, jdbcServices );
353349

354350
try {
351+
temporaryJdbcSessionOwner.transactionCoordinator = registry.requireService( TransactionCoordinatorBuilder.class )
352+
.buildTransactionCoordinator( jdbcCoordinator, () -> false );
355353
return temporaryJdbcSessionOwner.transactionCoordinator.createIsolationDelegate().delegateWork(
356354
new AbstractReturningWork<>() {
357355
@Override
@@ -423,6 +421,10 @@ private int databaseMicroVersion(DatabaseMetaData metadata) throws SQLException
423421
catch ( Exception e ) {
424422
log.unableToObtainConnectionToQueryMetadata( e );
425423
}
424+
finally {
425+
//noinspection resource
426+
jdbcCoordinator.close();
427+
}
426428
// accessing the JDBC metadata failed
427429
return getJdbcEnvironmentWithDefaults( configurationValues, registry, dialectFactory );
428430
}

0 commit comments

Comments
 (0)