You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by cl...@apache.org on 2018/06/15 14:45:10 UTC
[4/4] activemq-artemis git commit: ARTEMIS-1935: Close of openwire
connection should closes all open sessions
ARTEMIS-1935: Close of openwire connection should closes all open sessions
This is my ammending to the last commit
I'm adding some extra verifications to the test
and I fixed a leak that already existed on the previous map
(cherry picked from commit b360fa6063b4060ad91a478d3b46dba557d9a72b)
Project: http://git-wip-us.apache.org/repos/asf/activemq-artemis/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq-artemis/commit/838cca49
Tree: http://git-wip-us.apache.org/repos/asf/activemq-artemis/tree/838cca49
Diff: http://git-wip-us.apache.org/repos/asf/activemq-artemis/diff/838cca49
Branch: refs/heads/2.6.x
Commit: 838cca49ea739172f7f0a229a5f2b643a9e8f30c
Parents: f41e551
Author: Clebert Suconic <cl...@apache.org>
Authored: Fri Jun 15 10:32:39 2018 -0400
Committer: Clebert Suconic <cl...@apache.org>
Committed: Fri Jun 15 10:44:47 2018 -0400
----------------------------------------------------------------------
.../protocol/openwire/OpenWireConnection.java | 1 +
.../openwire/SessionHandlingOpenWireTest.java | 22 ++++++++++++++------
2 files changed, 17 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/838cca49/artemis-protocols/artemis-openwire-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/openwire/OpenWireConnection.java
----------------------------------------------------------------------
diff --git a/artemis-protocols/artemis-openwire-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/openwire/OpenWireConnection.java b/artemis-protocols/artemis-openwire-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/openwire/OpenWireConnection.java
index bafce92..b5adf34 100644
--- a/artemis-protocols/artemis-openwire-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/openwire/OpenWireConnection.java
+++ b/artemis-protocols/artemis-openwire-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/openwire/OpenWireConnection.java
@@ -1013,6 +1013,7 @@ public class OpenWireConnection extends AbstractRemotingConnection implements Se
public void removeSession(AMQConnectionContext context, SessionInfo info) throws Exception {
AMQSession session = sessions.remove(info.getSessionId());
if (session != null) {
+ sessionIdMap.remove(session.getCoreSession().getName());
session.close();
}
}
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/838cca49/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/openwire/SessionHandlingOpenWireTest.java
----------------------------------------------------------------------
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/openwire/SessionHandlingOpenWireTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/openwire/SessionHandlingOpenWireTest.java
index 989b62d..c43d5f7 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/openwire/SessionHandlingOpenWireTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/openwire/SessionHandlingOpenWireTest.java
@@ -61,12 +61,22 @@ public class SessionHandlingOpenWireTest extends BasicOpenWireTest {
public void testInternalSessionHandlingNoSessionClose() throws Exception {
try (Connection conn = factory.createConnection()) {
conn.start();
- Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
- Destination dest = createDestination(session,ActiveMQDestination.QUEUE_TYPE);
- sendMessages(session, dest, 1);
- MessageConsumer consumer = session.createConsumer(dest);
- Message m = consumer.receive(2000);
- assertNotNull(m);
+ for (int i = 0; i < 100; i++) {
+ Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
+ Destination dest = createDestination(session,ActiveMQDestination.QUEUE_TYPE);
+ sendMessages(session, dest, 1);
+ MessageConsumer consumer = session.createConsumer(dest);
+ Message m = consumer.receive(2000);
+ consumer.close();
+ assertNotNull(m);
+
+ if (i % 2 == 1) {
+ // it will close only half of the sessions
+ // just to introduce error conditions
+ session.close();
+ }
+
+ }
}
assertFalse(AssertionLoggerHandler.findText("Client connection failed, clearing up resources for session"));
assertFalse(AssertionLoggerHandler.findText("Cleared up resources for session"));