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/04/26 13:59:59 UTC
[1/2] activemq-artemis git commit: This closes #2034
Repository: activemq-artemis
Updated Branches:
refs/heads/master 9b13f5c5b -> eb2d8e178
This closes #2034
Project: http://git-wip-us.apache.org/repos/asf/activemq-artemis/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq-artemis/commit/eb2d8e17
Tree: http://git-wip-us.apache.org/repos/asf/activemq-artemis/tree/eb2d8e17
Diff: http://git-wip-us.apache.org/repos/asf/activemq-artemis/diff/eb2d8e17
Branch: refs/heads/master
Commit: eb2d8e178bacc815961d231468b3d4a1e81d0bc6
Parents: 9b13f5c d6adc29
Author: Clebert Suconic <cl...@apache.org>
Authored: Thu Apr 26 09:59:47 2018 -0400
Committer: Clebert Suconic <cl...@apache.org>
Committed: Thu Apr 26 09:59:47 2018 -0400
----------------------------------------------------------------------
.../core/impl/ActiveMQSessionContext.java | 9 ++++----
.../client/AutoCreateJmsDestinationTest.java | 23 ++++++++++++++++++++
2 files changed, 27 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
[2/2] activemq-artemis git commit: ARTEMIS-1818 re-create
auto-created queue on JMS reconnect
Posted by cl...@apache.org.
ARTEMIS-1818 re-create auto-created queue on JMS reconnect
Project: http://git-wip-us.apache.org/repos/asf/activemq-artemis/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq-artemis/commit/d6adc295
Tree: http://git-wip-us.apache.org/repos/asf/activemq-artemis/tree/d6adc295
Diff: http://git-wip-us.apache.org/repos/asf/activemq-artemis/diff/d6adc295
Branch: refs/heads/master
Commit: d6adc2950a3a7b988ae2440027deaf604800ff09
Parents: 9b13f5c
Author: Justin Bertram <jb...@apache.org>
Authored: Thu Apr 19 14:42:39 2018 -0500
Committer: Clebert Suconic <cl...@apache.org>
Committed: Thu Apr 26 09:59:47 2018 -0400
----------------------------------------------------------------------
.../core/impl/ActiveMQSessionContext.java | 9 ++++----
.../client/AutoCreateJmsDestinationTest.java | 23 ++++++++++++++++++++
2 files changed, 27 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/d6adc295/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/ActiveMQSessionContext.java
----------------------------------------------------------------------
diff --git a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/ActiveMQSessionContext.java b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/ActiveMQSessionContext.java
index f4033ec..fccb041 100644
--- a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/ActiveMQSessionContext.java
+++ b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/ActiveMQSessionContext.java
@@ -766,11 +766,10 @@ public class ActiveMQSessionContext extends SessionContext {
boolean isSessionStarted) throws ActiveMQException {
ClientSession.QueueQuery queueInfo = consumerInternal.getQueueInfo();
- // We try and recreate any non durable queues, since they probably won't be there unless
- // they are defined in broker.xml
- // This allows e.g. JMS non durable subs and temporary queues to continue to be used after failover
- if (!queueInfo.isDurable()) {
- CreateQueueMessage_V2 createQueueRequest = new CreateQueueMessage_V2(queueInfo.getAddress(), queueInfo.getName(), queueInfo.getRoutingType(), queueInfo.getFilterString(), false, queueInfo.isTemporary(), queueInfo.getMaxConsumers(), queueInfo.isPurgeOnNoConsumers(), queueInfo.isAutoCreated(), false, queueInfo.isExclusive(), queueInfo.isLastValue());
+ // We try to recreate any non-durable or auto-created queues, since they might not be there on failover/reconnect.
+ // This allows e.g. JMS non durable subs and temporary queues to continue to be used after failover/reconnection
+ if (!queueInfo.isDurable() || queueInfo.isAutoCreated()) {
+ CreateQueueMessage_V2 createQueueRequest = new CreateQueueMessage_V2(queueInfo.getAddress(), queueInfo.getName(), queueInfo.getRoutingType(), queueInfo.getFilterString(), queueInfo.isDurable(), queueInfo.isTemporary(), queueInfo.getMaxConsumers(), queueInfo.isPurgeOnNoConsumers(), queueInfo.isAutoCreated(), false, queueInfo.isExclusive(), queueInfo.isLastValue());
sendPacketWithoutLock(sessionChannel, createQueueRequest);
}
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/d6adc295/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/AutoCreateJmsDestinationTest.java
----------------------------------------------------------------------
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/AutoCreateJmsDestinationTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/AutoCreateJmsDestinationTest.java
index a980878..3094c59 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/AutoCreateJmsDestinationTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/AutoCreateJmsDestinationTest.java
@@ -33,6 +33,7 @@ import org.apache.activemq.artemis.api.jms.ActiveMQJMSClient;
import org.apache.activemq.artemis.core.security.Role;
import org.apache.activemq.artemis.core.server.Queue;
import org.apache.activemq.artemis.jms.client.ActiveMQTemporaryTopic;
+import org.apache.activemq.artemis.junit.Wait;
import org.apache.activemq.artemis.spi.core.security.ActiveMQJAASSecurityManager;
import org.apache.activemq.artemis.tests.integration.IntegrationTestLogger;
import org.apache.activemq.artemis.tests.util.JMSTestBase;
@@ -242,6 +243,28 @@ public class AutoCreateJmsDestinationTest extends JMSTestBase {
assertNull(server.locateQueue(topicAddress));
}
+ @Test
+ public void testAutoCreateOnReconnect() throws Exception {
+ Connection connection = cf.createConnection();
+ connection.start();
+ Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
+
+ javax.jms.Queue queue = ActiveMQJMSClient.createQueue(QUEUE_NAME);
+
+ MessageConsumer consumer = session.createConsumer(queue);
+ MessageProducer producer = session.createProducer(queue);
+ producer.send(session.createMessage());
+ assertNotNull(consumer.receive(500));
+ server.stop();
+ server.start();
+ waitForServerToStart(server);
+ // wait for client to reconnect
+ assertTrue(Wait.waitFor(() -> server.getTotalConsumerCount() == 1, 3000, 100));
+ producer.send(session.createMessage());
+ assertNotNull(consumer.receive(500));
+ connection.close();
+ }
+
@Before
@Override
public void setUp() throws Exception {