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"));
+   }
 }