You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by gt...@apache.org on 2019/06/19 09:30:15 UTC
[activemq] branch master updated: AMQ-7233 - ensure sessions are
cleaned up on pooledconnection.close before temp dests to ensure temp dests
actually get deleted, fix and test
This is an automated email from the ASF dual-hosted git repository.
gtully pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/activemq.git
The following commit(s) were added to refs/heads/master by this push:
new efc857f AMQ-7233 - ensure sessions are cleaned up on pooledconnection.close before temp dests to ensure temp dests actually get deleted, fix and test
efc857f is described below
commit efc857fc1f679631dcb98b9bf6b13317e7a80785
Author: gtully <ga...@gmail.com>
AuthorDate: Wed Jun 19 10:29:11 2019 +0100
AMQ-7233 - ensure sessions are cleaned up on pooledconnection.close before temp dests to ensure temp dests actually get deleted, fix and test
---
.../apache/activemq/jms/pool/PooledConnection.java | 2 +-
...onnectionFactoryWithTemporaryDestinationsTest.java | 19 +++++++++++++++++++
2 files changed, 20 insertions(+), 1 deletion(-)
diff --git a/activemq-jms-pool/src/main/java/org/apache/activemq/jms/pool/PooledConnection.java b/activemq-jms-pool/src/main/java/org/apache/activemq/jms/pool/PooledConnection.java
index 111e730..00911ec 100644
--- a/activemq-jms-pool/src/main/java/org/apache/activemq/jms/pool/PooledConnection.java
+++ b/activemq-jms-pool/src/main/java/org/apache/activemq/jms/pool/PooledConnection.java
@@ -81,8 +81,8 @@ public class PooledConnection implements TopicConnection, QueueConnection, Poole
@Override
public void close() throws JMSException {
- this.cleanupConnectionTemporaryDestinations();
this.cleanupAllLoanedSessions();
+ this.cleanupConnectionTemporaryDestinations();
if (this.pool != null) {
this.pool.decrementReferenceCount();
this.pool = null;
diff --git a/activemq-jms-pool/src/test/java/org/apache/activemq/jms/pool/PooledConnectionFactoryWithTemporaryDestinationsTest.java b/activemq-jms-pool/src/test/java/org/apache/activemq/jms/pool/PooledConnectionFactoryWithTemporaryDestinationsTest.java
index 86b4e27..d879580 100644
--- a/activemq-jms-pool/src/test/java/org/apache/activemq/jms/pool/PooledConnectionFactoryWithTemporaryDestinationsTest.java
+++ b/activemq-jms-pool/src/test/java/org/apache/activemq/jms/pool/PooledConnectionFactoryWithTemporaryDestinationsTest.java
@@ -19,6 +19,7 @@ package org.apache.activemq.jms.pool;
import static org.junit.Assert.assertEquals;
import javax.jms.Connection;
+import javax.jms.MessageConsumer;
import javax.jms.Queue;
import javax.jms.Session;
import javax.jms.Topic;
@@ -119,6 +120,24 @@ public class PooledConnectionFactoryWithTemporaryDestinationsTest extends JmsPoo
assertEquals(0, countBrokerTemporaryTopics());
}
+ @Test(timeout = 60000)
+ public void testTemporaryQueueLeakAfterConnectionCloseWithConsumer() throws Exception {
+ Connection pooledConnection = null;
+ Session session = null;
+ Queue tempQueue = null;
+ for (int i = 0; i < 2; i++) {
+ pooledConnection = pooledFactory.createConnection();
+ session = pooledConnection.createSession(false, Session.AUTO_ACKNOWLEDGE);
+ tempQueue = session.createTemporaryQueue();
+ MessageConsumer consumer = session.createConsumer(tempQueue);
+ consumer.receiveNoWait();
+ LOG.info("Created queue named: " + tempQueue.getQueueName());
+ pooledConnection.close();
+ }
+
+ assertEquals(0, countBrokerTemporaryQueues());
+ }
+
private int countBrokerTemporaryQueues() throws Exception {
return ((RegionBroker) brokerService.getRegionBroker()).getTempQueueRegion().getDestinationMap().size();
}