Skip to content

Commit 1f9a7cf

Browse files
committed
HHH-19655 Fix connection leak with PhysicalConnectionHandlingMode.IMMEDIATE_ACQUISITION_AND_HOLD
1 parent 4352835 commit 1f9a7cf

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
@@ -347,13 +347,11 @@ protected JdbcEnvironmentImpl getJdbcEnvironmentUsingJdbcMetadata(
347347
new SqlExceptionHelper( false ),
348348
registry
349349
);
350-
temporaryJdbcSessionOwner.transactionCoordinator = registry.requireService( TransactionCoordinatorBuilder.class )
351-
.buildTransactionCoordinator(
352-
new JdbcCoordinatorImpl( null, temporaryJdbcSessionOwner, jdbcServices ),
353-
() -> false
354-
);
350+
final JdbcCoordinatorImpl jdbcCoordinator = new JdbcCoordinatorImpl( null, temporaryJdbcSessionOwner, jdbcServices );
355351

356352
try {
353+
temporaryJdbcSessionOwner.transactionCoordinator = registry.requireService( TransactionCoordinatorBuilder.class )
354+
.buildTransactionCoordinator( jdbcCoordinator, () -> false );
357355
return temporaryJdbcSessionOwner.transactionCoordinator.createIsolationDelegate().delegateWork(
358356
new AbstractReturningWork<>() {
359357
@Override
@@ -426,6 +424,10 @@ private int databaseMicroVersion(DatabaseMetaData metadata) throws SQLException
426424
catch ( Exception e ) {
427425
log.unableToObtainConnectionToQueryMetadata( e );
428426
}
427+
finally {
428+
//noinspection resource
429+
jdbcCoordinator.close();
430+
}
429431
// accessing the JDBC metadata failed
430432
return getJdbcEnvironmentWithDefaults( configurationValues, registry, dialectFactory );
431433
}

0 commit comments

Comments
 (0)