Skip to content

Commit f6a296b

Browse files
committed
HHH-19655 Fix connection leak with PhysicalConnectionHandlingMode.IMMEDIATE_ACQUISITION_AND_HOLD
1 parent 73100a0 commit f6a296b

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
@@ -326,13 +326,11 @@ protected JdbcEnvironmentImpl getJdbcEnvironmentUsingJdbcMetadata(
326326
new SqlExceptionHelper( false ),
327327
registry
328328
);
329-
temporaryJdbcSessionOwner.transactionCoordinator = registry.requireService( TransactionCoordinatorBuilder.class )
330-
.buildTransactionCoordinator(
331-
new JdbcCoordinatorImpl( null, temporaryJdbcSessionOwner, jdbcServices ),
332-
() -> false
333-
);
329+
final JdbcCoordinatorImpl jdbcCoordinator = new JdbcCoordinatorImpl( null, temporaryJdbcSessionOwner, jdbcServices );
334330

335331
try {
332+
temporaryJdbcSessionOwner.transactionCoordinator = registry.requireService( TransactionCoordinatorBuilder.class )
333+
.buildTransactionCoordinator( jdbcCoordinator, () -> false );
336334
return temporaryJdbcSessionOwner.transactionCoordinator.createIsolationDelegate().delegateWork(
337335
new AbstractReturningWork<>() {
338336
@Override
@@ -404,6 +402,10 @@ private int databaseMicroVersion(DatabaseMetaData metadata) throws SQLException
404402
catch ( Exception e ) {
405403
log.unableToObtainConnectionToQueryMetadata( e );
406404
}
405+
finally {
406+
//noinspection resource
407+
jdbcCoordinator.close();
408+
}
407409
// accessing the JDBC metadata failed
408410
return getJdbcEnvironmentWithDefaults( configurationValues, registry, dialectFactory );
409411
}

0 commit comments

Comments
 (0)