This is an automated email from the ASF dual-hosted git repository.
mattrpav pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/activemq.git
The following commit(s) were added to refs/heads/main by this push:
new 5c4ef81c95 [AMQ-9820]: closed connections leaking into the pool when
reconnectOnException is used
5c4ef81c95 is described below
commit 5c4ef81c95e753ae0e5f886d955aa5f783ef09aa
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
---
.../activemq/jms/pool/PooledConnectionFactory.java | 7 +++++-
.../PooledConnectionSecurityExceptionTest.java | 25 +++++++++++-----------
2 files changed, 19 insertions(+), 13 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 d3a64e1934..1b11531b45 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 0c1a20168b..445f40feb3 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
@@ -16,13 +16,6 @@
*/
package org.apache.activemq.jms.pool;
-import static org.junit.Assert.assertNotSame;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import java.util.ArrayList;
-import java.util.List;
-
import jakarta.jms.Connection;
import jakarta.jms.ExceptionListener;
import jakarta.jms.JMSException;
@@ -30,7 +23,6 @@ import jakarta.jms.JMSSecurityException;
import jakarta.jms.MessageProducer;
import jakarta.jms.Queue;
import jakarta.jms.Session;
-
import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.activemq.broker.BrokerPlugin;
import org.apache.activemq.broker.BrokerService;
@@ -50,6 +42,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 +133,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 +232,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