Do not close transactional Connection in doReleaseConnection
Closes gh-28133
This commit is contained in:
@@ -178,6 +178,7 @@ public abstract class ConnectionFactoryUtils {
|
||||
if (conHolder != null && connectionEquals(conHolder, connection)) {
|
||||
// It's the transactional Connection: Don't close it.
|
||||
conHolder.released();
|
||||
return Mono.empty();
|
||||
}
|
||||
return Mono.from(connection.close());
|
||||
}).onErrorResume(NoTransactionException.class, ex -> Mono.from(connection.close()));
|
||||
|
||||
@@ -146,14 +146,15 @@ class TransactionAwareConnectionFactoryProxyUnitTests {
|
||||
ConnectionFactoryUtils.getConnection(connectionFactoryMock)
|
||||
.doOnNext(transactionalConnection::set).flatMap(connection -> proxyCf.create()
|
||||
.doOnNext(wrappedConnection -> assertThat(((Wrapped<?>) wrappedConnection).unwrap()).isSameAs(connection)))
|
||||
.as(rxtx::transactional)
|
||||
.flatMapMany(Connection::close)
|
||||
.as(rxtx::transactional)
|
||||
.as(StepVerifier::create)
|
||||
.verifyComplete();
|
||||
|
||||
verify(connectionFactoryMock, times(1)).create();
|
||||
verify(connectionMock1, times(1)).close();
|
||||
verifyNoInteractions(connectionMock2);
|
||||
verifyNoInteractions(connectionMock3);
|
||||
verify(connectionFactoryMock, times(1)).create();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user