Repository: activemq
Updated Branches:
  refs/heads/master 144b711a9 -> 5a27bdf07


https://issues.apache.org/jira/browse/AMQ-6068 - fix and test. Cleanup from ra 
managed connection needs to remove the connection info, leaving the tcp 
connection free for another identity. Possibly this could be conditional on 
having a user supplied clientId


Project: http://git-wip-us.apache.org/repos/asf/activemq/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq/commit/5a27bdf0
Tree: http://git-wip-us.apache.org/repos/asf/activemq/tree/5a27bdf0
Diff: http://git-wip-us.apache.org/repos/asf/activemq/diff/5a27bdf0

Branch: refs/heads/master
Commit: 5a27bdf07e1cc77251d02d10b477b38d34413d91
Parents: 144b711
Author: gtully <[email protected]>
Authored: Tue Dec 1 14:28:07 2015 +0000
Committer: gtully <[email protected]>
Committed: Tue Dec 1 14:28:07 2015 +0000

----------------------------------------------------------------------
 .../activemq/ra/ActiveMQManagedConnection.java  |  2 +-
 .../activemq/ra/ConnectionManagerAdapter.java   |  6 +--
 .../activemq/ra/ManagedConnectionTest.java      | 39 ++++++++++++++++++++
 3 files changed, 41 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/activemq/blob/5a27bdf0/activemq-ra/src/main/java/org/apache/activemq/ra/ActiveMQManagedConnection.java
----------------------------------------------------------------------
diff --git 
a/activemq-ra/src/main/java/org/apache/activemq/ra/ActiveMQManagedConnection.java
 
b/activemq-ra/src/main/java/org/apache/activemq/ra/ActiveMQManagedConnection.java
index 45e7028..85c947c 100755
--- 
a/activemq-ra/src/main/java/org/apache/activemq/ra/ActiveMQManagedConnection.java
+++ 
b/activemq-ra/src/main/java/org/apache/activemq/ra/ActiveMQManagedConnection.java
@@ -232,7 +232,7 @@ public class ActiveMQManagedConnection implements 
ManagedConnection, ExceptionLi
         proxyConnections.clear();
 
         try {
-            physicalConnection.cleanup();
+            physicalConnection.doCleanup(true);
         } catch (JMSException e) {
             throw new ResourceException("Could not cleanup the ActiveMQ 
connection: " + e, e);
         } finally {

http://git-wip-us.apache.org/repos/asf/activemq/blob/5a27bdf0/activemq-ra/src/test/java/org/apache/activemq/ra/ConnectionManagerAdapter.java
----------------------------------------------------------------------
diff --git 
a/activemq-ra/src/test/java/org/apache/activemq/ra/ConnectionManagerAdapter.java
 
b/activemq-ra/src/test/java/org/apache/activemq/ra/ConnectionManagerAdapter.java
index 9520c2a..278bf9c 100755
--- 
a/activemq-ra/src/test/java/org/apache/activemq/ra/ConnectionManagerAdapter.java
+++ 
b/activemq-ra/src/test/java/org/apache/activemq/ra/ConnectionManagerAdapter.java
@@ -86,11 +86,7 @@ public class ConnectionManagerAdapter implements 
ConnectionManager, ConnectionEv
             LOG.warn("Error occured during the cleanup of a managed 
connection: ", e);
         }
 
-        try {
-            ((ManagedConnection)event.getSource()).destroy();
-        } catch (ResourceException e) {
-            LOG.warn("Error occured during the destruction of a managed 
connection: ", e);
-        }
+        // should go back in a pool, no destroy
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/activemq/blob/5a27bdf0/activemq-ra/src/test/java/org/apache/activemq/ra/ManagedConnectionTest.java
----------------------------------------------------------------------
diff --git 
a/activemq-ra/src/test/java/org/apache/activemq/ra/ManagedConnectionTest.java 
b/activemq-ra/src/test/java/org/apache/activemq/ra/ManagedConnectionTest.java
index 6dbe864..2d1e10a 100755
--- 
a/activemq-ra/src/test/java/org/apache/activemq/ra/ManagedConnectionTest.java
+++ 
b/activemq-ra/src/test/java/org/apache/activemq/ra/ManagedConnectionTest.java
@@ -33,7 +33,9 @@ import javax.jms.TopicConnectionFactory;
 import javax.resource.ResourceException;
 import javax.resource.spi.ConnectionEvent;
 
+import org.apache.activemq.ActiveMQConnection;
 import org.apache.activemq.ActiveMQConnectionFactory;
+import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -61,6 +63,13 @@ public class ManagedConnectionTest {
 
     }
 
+    @After
+    public void destroyManagedConnection() throws Exception {
+        if (managedConnection != null) {
+            managedConnection.destroy();
+        }
+    }
+
     @Test(timeout = 60000)
     public void testConnectionCloseEvent() throws ResourceException, 
JMSException {
 
@@ -161,6 +170,36 @@ public class ManagedConnectionTest {
     }
 
     @Test(timeout = 60000)
+    public void testSetClientIdAfterCleanup() throws Exception {
+
+        connection.setClientID("test");
+        try {
+            connection.setClientID("test");
+            fail("Should have received JMSException");
+        } catch (JMSException e) {
+        }
+
+        ActiveMQConnection physicalConnection = (ActiveMQConnection) 
managedConnection.getPhysicalConnection();
+        try {
+            physicalConnection.setClientID("testTwo");
+            fail("Should have received JMSException");
+        } catch (JMSException e) {
+        }
+
+        // close the proxy
+        connection.close();
+
+        // can set the id on the physical connection again after cleanup
+        physicalConnection.setClientID("test3");
+
+        try {
+            physicalConnection.setClientID("test4");
+            fail("Should have received JMSException");
+        } catch (JMSException e) {
+        }
+    }
+
+    @Test(timeout = 60000)
     public void testSessionCloseIndependance() throws ResourceException, 
JMSException {
 
         Session session1 = connection.createSession(true, 0);

Reply via email to