Repository: activemq-artemis Updated Branches: refs/heads/master 2d7b77ac1 -> 4ee39e098
Do not autoDelete address if it was not autoCreated Project: http://git-wip-us.apache.org/repos/asf/activemq-artemis/repo Commit: http://git-wip-us.apache.org/repos/asf/activemq-artemis/commit/55fbcfeb Tree: http://git-wip-us.apache.org/repos/asf/activemq-artemis/tree/55fbcfeb Diff: http://git-wip-us.apache.org/repos/asf/activemq-artemis/diff/55fbcfeb Branch: refs/heads/master Commit: 55fbcfebf8460a415573565f6dc447a1e9092ecc Parents: 2d7b77a Author: Martyn Taylor <[email protected]> Authored: Thu Dec 15 17:13:09 2016 +0000 Committer: Martyn Taylor <[email protected]> Committed: Thu Dec 15 17:13:09 2016 +0000 ---------------------------------------------------------------------- .../amqp/proton/ProtonServerSenderContext.java | 14 ++++++++++---- .../artemis/core/server/impl/ActiveMQServerImpl.java | 2 +- 2 files changed, 11 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/55fbcfeb/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/proton/ProtonServerSenderContext.java ---------------------------------------------------------------------- diff --git a/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/proton/ProtonServerSenderContext.java b/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/proton/ProtonServerSenderContext.java index 52730e1..f6c7786 100644 --- a/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/proton/ProtonServerSenderContext.java +++ b/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/proton/ProtonServerSenderContext.java @@ -21,6 +21,7 @@ import java.util.Map; import java.util.Objects; import java.util.Set; +import org.apache.activemq.artemis.api.core.ActiveMQAddressDoesNotExistException; import org.apache.activemq.artemis.api.core.ActiveMQQueueExistsException; import org.apache.activemq.artemis.api.core.ActiveMQExceptionType; import org.apache.activemq.artemis.api.core.SimpleString; @@ -247,13 +248,18 @@ public class ProtonServerSenderContext extends ProtonInitializable implements Pr boolean clientDefined = hasCapabilities(TOPIC, source) || hasCapabilities(QUEUE, source); if (clientDefined) { multicast = hasCapabilities(TOPIC, source); - AddressInfo addressInfo = sessionSPI.getAddress(addressToUse); - Set<RoutingType> routingTypes = addressInfo.getRoutingTypes(); + AddressQueryResult addressQueryResult = sessionSPI.addressQuery(addressToUse.toString(), defaultRoutingType, true); + if (!addressQueryResult.isExists()) { + throw ActiveMQAMQPProtocolMessageBundle.BUNDLE.sourceAddressDoesntExist(); + } + + Set<RoutingType> routingTypes = addressQueryResult.getRoutingTypes(); + //if the client defines 1 routing type and the broker another then throw an exception if (multicast && !routingTypes.contains(RoutingType.MULTICAST)) { - throw new ActiveMQAMQPIllegalStateException("Address " + addressInfo.getName() + " is not configured for topic support"); + throw new ActiveMQAMQPIllegalStateException("Address " + addressToUse + " is not configured for topic support"); } else if (!multicast && !routingTypes.contains(RoutingType.ANYCAST)) { - throw new ActiveMQAMQPIllegalStateException("Address " + addressInfo.getName() + " is not configured for queue support"); + throw new ActiveMQAMQPIllegalStateException("Address " + addressToUse + " is not configured for queue support"); } } else { //if not we look up the address http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/55fbcfeb/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ActiveMQServerImpl.java ---------------------------------------------------------------------- diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ActiveMQServerImpl.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ActiveMQServerImpl.java index f186614..76ba050 100644 --- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ActiveMQServerImpl.java +++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ActiveMQServerImpl.java @@ -1767,7 +1767,7 @@ public class ActiveMQServerImpl implements ActiveMQServer { queue.deleteQueue(removeConsumers); - if (autoDeleteAddress && postOffice != null) { + if (autoDeleteAddress && postOffice != null && getAddressInfo(address).isAutoCreated()) { try { removeAddressInfo(address, session); } catch (ActiveMQDeleteAddressException e) {
