[
https://issues.apache.org/jira/browse/QPID-5420?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13862637#comment-13862637
]
Keith Wall commented on QPID-5420:
----------------------------------
I've taken a closer look at this defect. I can see that the behaviour when
publishing/consuming using a BURL specifying the default exchange has changed a
number of times over recent releases. I've summarised the behaviour in the
table below:
||release||system property qpid.declare_exchanges||0-10||0-9||
|trunk|true| fails *1 | fails *1|
|trunk|false| functions #2 |fails *3 |
|0.24|true| fails *1 | fails *1 |
|0.24|false| functions #2 | fails *3 |
|0.22|true| fails *2 | functions #1 |
|0.20|true|fails *2 | functions #1 |
|0.18|true| fails *2 | functions #1 |
*1 = Fails, Attempt to declare exchange: which begins with reserved name or
prefix.
*2 = Fails, Bind not allowed for default exchange
*3 = Fails, Error sending exchange bound, (broker fails with "Exchange exchange
must not be null" and closes connection).
#1 = Functions, but received message has JMSDestination =
direct://<<default>>/myqueue/myqueue?routingkey='my queue'
#2 = Functions, but received message has JMSDestination =
:///myqueue/myqueue?routingkey='my queue'
In other words, for 0-9:
* Publishing/consuming with BURL with default exchange worked <= 0.22.
* At 0.24/trunk, QPID-4897 changed the client to send exchange.bound, but
unfortunately, the Java Broker (0-8..0-9-1 path fails with a NPE
(ExchangeBoundHandler.java) if exchange.bound queries the default exchange
(error - *3). Also QPID-4973, changed the Broker (AbstractVirtualHost.java) to
mean that attempts to actively declare the default exchange fail (error - *1)
For 0-10:
* Publishing/consuming with BURL with default exchange failed <= 0.22 (error -
*2).
* At 0.24/trunk changes to client ( QPID-4897) means that client no longer
tries to bind to the default exchange, so Publishing/consuming with BURL with
default exchange works if qpid.declare_exchanges is false. If
qpid.declare_exchanges is true, like 0-9, it fails (error - *1)
> Creating consumer for Destination specifying the no-name exchange in binding
> url syntax fails against Java Broker.
> ------------------------------------------------------------------------------------------------------------------
>
> Key: QPID-5420
> URL: https://issues.apache.org/jira/browse/QPID-5420
> Project: Qpid
> Issue Type: Bug
> Components: Java Broker, Java Client
> Affects Versions: 0.24, 0.26, 0.27
> Reporter: Keith Wall
> Attachments: 0001-QPID-5420-WIP-Proposed-fix-tests.patch
>
>
> If when using the Java Broker, I try to consume from a Destination specified
> by a binding url, where the exchange part is empty (signifying the no-name
> exchange)
> {noformat}
> destination.sub1 = direct:////sub1?durable='true'
> {noformat}
> , then I see an exception:
> On the client I see the following as the Java Broker closes the connection:
> {noformat}
> org.apache.qpid.AMQDisconnectedException: Server closed connection and
> reconnection not permitted.
> {noformat}
> On the broker, I see the following logged:
> {noformat}
> 2013-12-13 10:05:43,602 ERROR [IoReceiver - /127.0.0.1:49532]
> (v0_8.AMQProtocolEngine) - Unexpected exception while processing frame.
> Closing connection.
> org.apache.qpid.AMQException: Exchange exchange must not be null
> at
> org.apache.qpid.server.protocol.v0_8.handler.ExchangeBoundHandler.methodReceived(ExchangeBoundHandler.java:89)
> at
> org.apache.qpid.server.protocol.v0_8.handler.ServerMethodDispatcherImpl.dispatchExchangeBound(ServerMethodDispatcherImpl.java:458)
> at
> org.apache.qpid.framing.amqp_0_9.ExchangeBoundBodyImpl.execute(ExchangeBoundBodyImpl.java:130)
> at
> org.apache.qpid.server.protocol.v0_8.state.AMQStateManager.methodReceived(AMQStateManager.java:120)
> at
> org.apache.qpid.server.protocol.v0_8.AMQProtocolEngine.methodFrameReceived(AMQProtocolEngine.java:578)
> at
> org.apache.qpid.framing.AMQMethodBodyImpl.handle(AMQMethodBodyImpl.java:97)
> at
> org.apache.qpid.server.protocol.v0_8.AMQProtocolEngine.frameReceived(AMQProtocolEngine.java:442)
> at
> org.apache.qpid.server.protocol.v0_8.AMQProtocolEngine.dataBlockReceived(AMQProtocolEngine.java:365)
> at
> org.apache.qpid.server.protocol.v0_8.AMQProtocolEngine.received(AMQProtocolEngine.java:286)
> at
> org.apache.qpid.server.protocol.v0_8.AMQProtocolEngine.received(AMQProtocolEngine.java:104)
> at
> org.apache.qpid.server.protocol.MultiVersionProtocolEngine.received(MultiVersionProtocolEngine.java:131)
> at
> org.apache.qpid.server.protocol.MultiVersionProtocolEngine.received(MultiVersionProtocolEngine.java:47)
> at
> org.apache.qpid.transport.network.io.IoReceiver.run(IoReceiver.java:161)
> at java.lang.Thread.run(Thread.java:744)
> {noformat}
--
This message was sent by Atlassian JIRA
(v6.1.5#6160)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]