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:42:37 UTC
[1/3] activemq-artemis git commit: ARTEMIS-1935: Close of openwire
connection should closes all open sessions
Repository: activemq-artemis
Updated Branches:
refs/heads/master f52fefb42 -> 13954d350
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
Project: http://git-wip-us.apache.org/repos/asf/activemq-artemis/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq-artemis/commit/b360fa60
Tree: http://git-wip-us.apache.org/repos/asf/activemq-artemis/tree/b360fa60
Diff: http://git-wip-us.apache.org/repos/asf/activemq-artemis/diff/b360fa60
Branch: refs/heads/master
Commit: b360fa6063b4060ad91a478d3b46dba557d9a72b
Parents: 3987115
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:33:55 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/b360fa60/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/b360fa60/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"));
[3/3] activemq-artemis git commit: This closes #2141
Posted by cl...@apache.org.
This closes #2141
Project: http://git-wip-us.apache.org/repos/asf/activemq-artemis/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq-artemis/commit/13954d35
Tree: http://git-wip-us.apache.org/repos/asf/activemq-artemis/tree/13954d35
Diff: http://git-wip-us.apache.org/repos/asf/activemq-artemis/diff/13954d35
Branch: refs/heads/master
Commit: 13954d35096a66e5b5b97bbb69c0f1ad425b1543
Parents: f52fefb b360fa6
Author: Clebert Suconic <cl...@apache.org>
Authored: Fri Jun 15 10:42:31 2018 -0400
Committer: Clebert Suconic <cl...@apache.org>
Committed: Fri Jun 15 10:42:31 2018 -0400
----------------------------------------------------------------------
.../protocol/openwire/OpenWireConnection.java | 15 +++++-------
.../openwire/SessionHandlingOpenWireTest.java | 25 ++++++++++++++++++++
2 files changed, 31 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
[2/3] activemq-artemis git commit: ARTEMIS-1935: Close of openwire
connection should closes all open sessions
Posted by cl...@apache.org.
ARTEMIS-1935: Close of openwire connection should closes all open sessions
Project: http://git-wip-us.apache.org/repos/asf/activemq-artemis/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq-artemis/commit/39871157
Tree: http://git-wip-us.apache.org/repos/asf/activemq-artemis/tree/39871157
Diff: http://git-wip-us.apache.org/repos/asf/activemq-artemis/diff/39871157
Branch: refs/heads/master
Commit: 39871157b40f8ec1c6e1efc37a83ec1f9892e030
Parents: f52fefb
Author: Benjamin Graf <be...@gmx.net>
Authored: Thu Jun 14 20:34:04 2018 +0200
Committer: Clebert Suconic <cl...@apache.org>
Committed: Fri Jun 15 10:33:55 2018 -0400
----------------------------------------------------------------------
.../core/protocol/openwire/OpenWireConnection.java | 14 +++++---------
.../openwire/SessionHandlingOpenWireTest.java | 15 +++++++++++++++
2 files changed, 20 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/39871157/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 225aac4..bafce92 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
@@ -183,12 +183,6 @@ public class OpenWireConnection extends AbstractRemotingConnection implements Se
*/
private ServerSession internalSession;
- /**
- * Used for proper closing of internal sessions like OpenWire advisory
- * session at disconnect.
- */
- private final Set<SessionId> internalSessionIds = new ConcurrentHashSet<>();
-
private final OperationContext operationContext;
private static final AtomicLongFieldUpdater<OpenWireConnection> LAST_SENT_UPDATER = AtomicLongFieldUpdater.newUpdater(OpenWireConnection.class, "lastSent");
@@ -616,8 +610,11 @@ public class OpenWireConnection extends AbstractRemotingConnection implements Se
state.shutdown();
try {
- for (SessionId sessionId : internalSessionIds) {
- sessions.get(sessionId).close();
+ for (SessionId sessionId : sessionIdMap.values()) {
+ AMQSession session = sessions.get(sessionId);
+ if (session != null) {
+ session.close();
+ }
}
internalSession.close(false);
} catch (Exception e) {
@@ -993,7 +990,6 @@ public class OpenWireConnection extends AbstractRemotingConnection implements Se
public void addSessions(Set<SessionId> sessionSet) {
for (SessionId sid : sessionSet) {
addSession(getState().getSessionState(sid).getInfo(), true);
- internalSessionIds.add(sid);
}
}
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/39871157/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 9c476a9..989b62d 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
@@ -56,4 +56,19 @@ public class SessionHandlingOpenWireTest extends BasicOpenWireTest {
assertFalse(AssertionLoggerHandler.findText("Client connection failed, clearing up resources for session"));
assertFalse(AssertionLoggerHandler.findText("Cleared up resources for session"));
}
+
+ @Test
+ 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);
+ }
+ assertFalse(AssertionLoggerHandler.findText("Client connection failed, clearing up resources for session"));
+ assertFalse(AssertionLoggerHandler.findText("Cleared up resources for session"));
+ }
}