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 2019/08/20 14:57:35 UTC
[activemq-artemis] 01/03: ARTEMIS-2451 eliminate knownDestinations
cache
This is an automated email from the ASF dual-hosted git repository.
clebertsuconic pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/activemq-artemis.git
commit 2fe565f378be904a352db71cf45ed32f704db747
Author: Justin Bertram <jb...@apache.org>
AuthorDate: Wed Aug 14 09:37:11 2019 +0100
ARTEMIS-2451 eliminate knownDestinations cache
---
.../activemq/artemis/jms/client/ActiveMQConnection.java | 12 ------------
.../activemq/artemis/jms/client/ActiveMQDestination.java | 10 ++++++++++
.../apache/activemq/artemis/jms/client/ActiveMQSession.java | 10 ++++++----
.../tests/integration/amqp/QueueAutoCreationTest.java | 3 ++-
.../integration/client/AutoCreateJmsDestinationTest.java | 12 ++++++------
.../integration/jms/client/TemporaryDestinationTest.java | 5 ++++-
6 files changed, 28 insertions(+), 24 deletions(-)
diff --git a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQConnection.java b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQConnection.java
index 2300a54..9241ddf 100644
--- a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQConnection.java
+++ b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQConnection.java
@@ -97,8 +97,6 @@ public class ActiveMQConnection extends ActiveMQConnectionForContextImpl impleme
private final Set<SimpleString> tempQueues = new ConcurrentHashSet<>();
- private final Set<SimpleString> knownDestinations = new ConcurrentHashSet<>();
-
private volatile boolean hasNoLocal;
private volatile ExceptionListener exceptionListener;
@@ -543,20 +541,10 @@ public class ActiveMQConnection extends ActiveMQConnectionForContextImpl impleme
public void addTemporaryQueue(final SimpleString queueAddress) {
tempQueues.add(queueAddress);
- knownDestinations.add(queueAddress);
}
public void removeTemporaryQueue(final SimpleString queueAddress) {
tempQueues.remove(queueAddress);
- knownDestinations.remove(queueAddress);
- }
-
- public void addKnownDestination(final SimpleString address) {
- knownDestinations.add(address);
- }
-
- public boolean containsKnownDestination(final SimpleString address) {
- return knownDestinations.contains(address);
}
public boolean containsTemporaryQueue(final SimpleString queueAddress) {
diff --git a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQDestination.java b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQDestination.java
index 3da3a5a..9554b64 100644
--- a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQDestination.java
+++ b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQDestination.java
@@ -352,6 +352,7 @@ public class ActiveMQDestination extends JNDIStorable implements Destination, Se
private final transient ActiveMQSession session;
+ private transient boolean created;
// Constructors --------------------------------------------------
protected ActiveMQDestination(final String address,
@@ -449,6 +450,7 @@ public class ActiveMQDestination extends JNDIStorable implements Destination, Se
} else {
sessionToUse.deleteTemporaryTopic(this);
}
+ setCreated(false);
} finally {
if (openedHere) {
sessionToUse.close();
@@ -483,6 +485,14 @@ public class ActiveMQDestination extends JNDIStorable implements Destination, Se
return temporary;
}
+ public boolean isCreated() {
+ return created;
+ }
+
+ public void setCreated(boolean created) {
+ this.created = created;
+ }
+
public TYPE getType() {
if (thetype == null) {
if (temporary) {
diff --git a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQSession.java b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQSession.java
index aea3d45..c61df98 100644
--- a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQSession.java
+++ b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQSession.java
@@ -383,7 +383,7 @@ public class ActiveMQSession implements QueueSession, TopicSession {
void checkDestination(ActiveMQDestination destination) throws JMSException {
SimpleString address = destination.getSimpleAddress();
// TODO: What to do with FQQN
- if (!connection.containsKnownDestination(address)) {
+ if (!destination.isCreated()) {
try {
ClientSession.AddressQuery addressQuery = session.addressQuery(address);
@@ -425,7 +425,7 @@ public class ActiveMQSession implements QueueSession, TopicSession {
throw JMSExceptionHelper.convertFromActiveMQException(e);
}
// this is done at the end, if no exceptions are thrown
- connection.addKnownDestination(address);
+ destination.setCreated(true);
}
}
@@ -811,7 +811,7 @@ public class ActiveMQSession implements QueueSession, TopicSession {
}
}
- connection.addKnownDestination(dest.getSimpleAddress());
+ dest.setCreated(true);
consumer = createClientConsumer(dest, null, coreFilterString);
} else {
@@ -825,7 +825,7 @@ public class ActiveMQSession implements QueueSession, TopicSession {
}
}
- connection.addKnownDestination(dest.getSimpleAddress());
+ dest.setCreated(true);
SimpleString queueName;
@@ -999,6 +999,8 @@ public class ActiveMQSession implements QueueSession, TopicSession {
connection.addTemporaryQueue(simpleAddress);
+ queue.setCreated(true);
+
return queue;
} catch (ActiveMQException e) {
throw JMSExceptionHelper.convertFromActiveMQException(e);
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/amqp/QueueAutoCreationTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/amqp/QueueAutoCreationTest.java
index 5d87f11..ed72104 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/amqp/QueueAutoCreationTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/amqp/QueueAutoCreationTest.java
@@ -25,6 +25,7 @@ import org.apache.activemq.artemis.core.server.JournalType;
import org.apache.activemq.artemis.core.settings.impl.AddressSettings;
import org.apache.activemq.artemis.jms.client.ActiveMQConnection;
import org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory;
+import org.apache.activemq.artemis.jms.client.ActiveMQDestination;
import org.apache.activemq.artemis.jms.client.ActiveMQQueue;
import org.apache.activemq.artemis.jms.client.ActiveMQTopic;
import org.apache.activemq.artemis.utils.UUIDGenerator;
@@ -130,7 +131,7 @@ public class QueueAutoCreationTest extends JMSClientTestSupport {
producer.send(session.createTextMessage("hello"));
}
- Assert.assertTrue(((ActiveMQConnection)connection).containsKnownDestination(addressName));
+ Assert.assertTrue(((ActiveMQDestination) topic).isCreated());
}
private void sendStringOfSize(int msgSize, boolean useCoreReceive) throws JMSException {
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 a285543..1eafdb4 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
@@ -41,15 +41,15 @@ import org.apache.activemq.artemis.core.client.impl.ServerLocatorImpl;
import org.apache.activemq.artemis.core.security.Role;
import org.apache.activemq.artemis.core.server.Queue;
import org.apache.activemq.artemis.core.settings.impl.AddressSettings;
-import org.apache.activemq.artemis.jms.client.ActiveMQConnection;
import org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory;
+import org.apache.activemq.artemis.jms.client.ActiveMQDestination;
import org.apache.activemq.artemis.jms.client.ActiveMQQueue;
import org.apache.activemq.artemis.jms.client.ActiveMQTemporaryTopic;
import org.apache.activemq.artemis.jms.client.ActiveMQTopic;
-import org.apache.activemq.artemis.tests.util.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;
+import org.apache.activemq.artemis.tests.util.Wait;
import org.apache.activemq.artemis.utils.UUIDGenerator;
import org.junit.After;
import org.junit.Assert;
@@ -300,7 +300,7 @@ public class AutoCreateJmsDestinationTest extends JMSTestBase {
producer.send(session.createTextMessage("hello"));
}
- Assert.assertTrue(((ActiveMQConnection)connection).containsKnownDestination(addressName));
+ Assert.assertTrue((((ActiveMQDestination) topic).isCreated()));
}
@Test (timeout = 30000)
@@ -324,7 +324,7 @@ public class AutoCreateJmsDestinationTest extends JMSTestBase {
Assert.fail("Expected to throw exception here");
} catch (JMSException expected) {
}
- Assert.assertFalse(((ActiveMQConnection)connection).containsKnownDestination(addressName));
+ Assert.assertFalse(((ActiveMQDestination) queue).isCreated());
}
}
@@ -349,7 +349,7 @@ public class AutoCreateJmsDestinationTest extends JMSTestBase {
} catch (JMSException expected) {
}
- Assert.assertFalse(((ActiveMQConnection)connection).containsKnownDestination(addressName));
+ Assert.assertFalse(((ActiveMQDestination) queue).isCreated());
}
@@ -370,7 +370,7 @@ public class AutoCreateJmsDestinationTest extends JMSTestBase {
MessageProducer producer = session.createProducer(queue);
Assert.assertNotNull(server.locateQueue(addressName));
- Assert.assertTrue(((ActiveMQConnection) connection).containsKnownDestination(addressName));
+ Assert.assertTrue(((ActiveMQDestination) queue).isCreated());
}
}
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/client/TemporaryDestinationTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/client/TemporaryDestinationTest.java
index 01cde63..850359a 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/client/TemporaryDestinationTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/client/TemporaryDestinationTest.java
@@ -33,6 +33,7 @@ import org.apache.activemq.artemis.core.server.ServerSession;
import org.apache.activemq.artemis.core.server.impl.ServerSessionImpl;
import org.apache.activemq.artemis.core.settings.impl.AddressSettings;
import org.apache.activemq.artemis.jms.client.ActiveMQConnection;
+import org.apache.activemq.artemis.jms.client.ActiveMQDestination;
import org.apache.activemq.artemis.spi.core.security.ActiveMQJAASSecurityManager;
import org.apache.activemq.artemis.tests.util.JMSTestBase;
import org.junit.Before;
@@ -79,9 +80,11 @@ public class TemporaryDestinationTest extends JMSTestBase {
consumer.close();
+ assertTrue(((ActiveMQDestination) tempQueue).isCreated());
+
tempQueue.delete();
- assertFalse(conn.containsKnownDestination(SimpleString.toSimpleString(tempQueue.getQueueName())));
+ assertFalse(((ActiveMQDestination) tempQueue).isCreated());
assertFalse(conn.containsTemporaryQueue(SimpleString.toSimpleString(tempQueue.getQueueName())));
} finally {