[
https://issues.apache.org/jira/browse/QPID-5601?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13922705#comment-13922705
]
Robbie Gemmell commented on QPID-5601:
--------------------------------------
https://svn.apache.org/r1574235
===============================
- Is it possible we may have stored any bindings in the store for the default
exchange (named either <<default>>, "", or null), and need to get rid of or
ignore them in future?
- We have a constant for the exchange name
(ExchangeDefaults.DEFAULT_EXCHANGE_NAME) that we should probably use:
{noformat}
@@ -380,44 +378,44 @@ public abstract class AbstractVirtualHost implements
VirtualHost, IConnectionReg
DurableConfigurationStoreHelper.createQueue(getDurableConfigurationStore(),
queue);
}
- //get the exchange name (returns default exchange name if none was
specified)
+ //get the exchange name (returns empty String if none was specified)
String exchangeName = queueConfiguration.getExchange();
- ExchangeImpl exchange = _exchangeRegistry.getExchange(exchangeName);
- if (exchange == null)
+
+ if("".equals(exchangeName))
{noformat}
- As above, or there seems to be a utility method some methods are using
called nameNullOrEmpty():
{noformat}
@@ -683,83 +684,101 @@ public class ServerSessionDelegate extends
SessionDelegate
return;
}
}
-
- if(method.getPassive())
+ if(method.getExchange() == null || method.getExchange().equals(""))
{
- ExchangeImpl exchange = getExchange(session, exchangeName);
-
- if(exchange == null)
+ if(!DirectExchange.TYPE.getType().equals(method.getType()))
{
- exception(session, method, ExecutionErrorCode.NOT_FOUND,
"not-found: exchange-name '" + exchangeName + "'");
+ exception(session, method, ExecutionErrorCode.NOT_ALLOWED,
+ "Attempt to redeclare default exchange "
+ + " of type " + DirectExchange.TYPE.getType()
+ + " to " + method.getType() +".");
}
- else
+ if(method.hasAlternateExchange() &&
!"".equals(method.getAlternateExchange()))
{noformat}
{noformat}
@@ -878,19 +897,30 @@ public class ServerSessionDelegate extends SessionDelegate
ExchangeQueryResult result = new ExchangeQueryResult();
- ExchangeImpl exchange = getExchange(session, method.getName());
- if(exchange != null)
+ final String exchangeName = method.getName();
+
+ if(exchangeName == null || exchangeName.equals(""))
{
{noformat}
Etc
- Similar comment applies to the 0-8 method handlers use of "" and
AMQShortString#EMPTY_STRING.
More of an existing issue really, but your changes moved lots of the affected
code in the class so I just spotted it now...ExchangeBoundHandler has lots of
cases it may generate AMQShortString values that are of illegal length, but it
only makes attempt to prevent that in 1 of the cases. We've added additional
client use of isBound() recently, so its probably much more likely to fail
going forward than in the past.This problem also applies to most of the error
messages in most of the handler classes...
> [Java Broker] The default exchange is not really an exchange
> ------------------------------------------------------------
>
> Key: QPID-5601
> URL: https://issues.apache.org/jira/browse/QPID-5601
> Project: Qpid
> Issue Type: Improvement
> Components: Java Broker
> Reporter: Rob Godfrey
> Assignee: Rob Godfrey
> Fix For: 0.27
>
>
> Although 0-x specifies a "no-name" default "exchange" that behaves like a
> direct exchange where the queues are bound to the exchange with a binding-key
> equal to the queues name... Given the advent of 1-0 it is perhaps more
> consistent to think of it as a "routing node" which will take whatever is in
> the routing key of the inbound transfer and use that to route to the
> appropriate destination (whether this be a queue or another node).
> As a first step to implementing this, we should change the implementation
> detail internally such that the "default exchange" is not presented in the
> set of "Exchanges" and doesn't implement the Exchange interface.
> For 0-x protocols we can "fake" it's existence as an exchange for operations
> such as exchange declare / delete / bind / unbind / query
--
This message was sent by Atlassian JIRA
(v6.2#6252)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]