This is an automated email from the ASF dual-hosted git repository.
mattrpav pushed a commit to branch activemq-5.19.x
in repository https://gitbox.apache.org/repos/asf/activemq.git
The following commit(s) were added to refs/heads/activemq-5.19.x by this push:
new c2dced4b30 [AMQ-9820]: closed connections leaking into the pool when
reconnectOnException is used
c2dced4b30 is described below
commit c2dced4b307ca74f0784339a106261d0469be2b0
Author: Jean-Louis Monteiro <[email protected]>
AuthorDate: Wed Dec 17 15:10:41 2025 +0100
[AMQ-9820]: closed connections leaking into the pool when
reconnectOnException is used
(cherry picked from commit 5c4ef81c95e753ae0e5f886d955aa5f783ef09aa)
---
.../activemq/jms/pool/PooledConnectionFactory.java | 7 ++++++-
.../jms/pool/PooledConnectionSecurityExceptionTest.java | 17 +++++++++++++----
2 files changed, 19 insertions(+), 5 deletions(-)
diff --git
a/activemq-jms-pool/src/main/java/org/apache/activemq/jms/pool/PooledConnectionFactory.java
b/activemq-jms-pool/src/main/java/org/apache/activemq/jms/pool/PooledConnectionFactory.java
index 264303791c..01932075b2 100644
---
a/activemq-jms-pool/src/main/java/org/apache/activemq/jms/pool/PooledConnectionFactory.java
+++
b/activemq-jms-pool/src/main/java/org/apache/activemq/jms/pool/PooledConnectionFactory.java
@@ -129,7 +129,12 @@ public class PooledConnectionFactory implements
ConnectionFactory, QueueConnecti
@Override
public boolean validateObject(ConnectionKey connectionKey,
PooledObject<ConnectionPool> pooledObject) {
ConnectionPool connection = pooledObject.getObject();
- if (connection != null && connection.expiredCheck()) {
+ if (connection == null || connection.getConnection()
== null) {
+ LOG.trace("Connection has been closed and will be
destroyed: {}", connection);
+ return false;
+ }
+
+ if (connection.expiredCheck()) {
LOG.trace("Connection has expired: {} and will be
destroyed", connection);
return false;
}
diff --git
a/activemq-jms-pool/src/test/java/org/apache/activemq/jms/pool/PooledConnectionSecurityExceptionTest.java
b/activemq-jms-pool/src/test/java/org/apache/activemq/jms/pool/PooledConnectionSecurityExceptionTest.java
index c543b4b50a..c0a3a7b6b5 100644
---
a/activemq-jms-pool/src/test/java/org/apache/activemq/jms/pool/PooledConnectionSecurityExceptionTest.java
+++
b/activemq-jms-pool/src/test/java/org/apache/activemq/jms/pool/PooledConnectionSecurityExceptionTest.java
@@ -50,6 +50,13 @@ import org.junit.rules.TestName;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.util.ArrayList;
+import java.util.List;
+
+import static org.junit.Assert.assertNotSame;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
/**
* Test Pooled connections ability to handle security exceptions
*/
@@ -134,8 +141,9 @@ public class PooledConnectionSecurityExceptionTest {
@Override
public boolean isSatisified() throws Exception {
- return connection1.getConnection() !=
- ((PooledConnection)
pooledConnFact.createConnection("invalid", "credentials")).getConnection();
+ try (final PooledConnection newConnection = (PooledConnection)
pooledConnFact.createConnection("invalid", "credentials")) {
+ return connection1.getConnection() !=
newConnection.getConnection();
+ }
}
}));
@@ -232,8 +240,9 @@ public class PooledConnectionSecurityExceptionTest {
@Override
public boolean isSatisified() throws Exception {
- return connection1.getConnection() !=
- ((PooledConnection)
pooledConnFact.createConnection("invalid", "credentials")).getConnection();
+ try (final PooledConnection newConnection = (PooledConnection)
pooledConnFact.createConnection("invalid", "credentials")) {
+ return connection1.getConnection() !=
newConnection.getConnection();
+ }
}
}));
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
For further information, visit: https://activemq.apache.org/contact