You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@qpid.apache.org by Ernie Allen <ea...@redhat.com> on 2014/04/14 19:02:34 UTC
Review Request 20328: QPID-5697 An exchange is deleted by a request for
topic removal
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/20328/
-----------------------------------------------------------
Review request for qpid, Gordon Sim and Ted Ross.
Repository: qpid
Description
-------
When a topic delete request is issued and the topic does not exist and there is an exchange of that name, the exchange is deleted which is obviously not intended. When the topic exists the topic is deleted first, see additional info for more details.
Steps to Reproduce:
1. qpid-config add exchange fanout myExchange
2. qpid-config del topic myExchange
Exchange myExchange removed instead of 'Topic not found' exception
If the amqp.so module is loaded, the request to delete the topic should be handled by the registered objectFactory Topic::deleteObject().
Rather than return false when a request to delete the topic is received and the topic is not found, this patch throws a NotFoundException.
The code in Broker::deleteObject() that treats topic as a synonym for exchange was left intact in case the amqp.so module is not loaded. In that case the code will function as before and topic deletes will delete exchanges.
Diffs
-----
/trunk/qpid/cpp/src/qpid/broker/amqp/Topic.cpp 1587241
Diff: https://reviews.apache.org/r/20328/diff/
Testing
-------
with amqp.so loaded
>qpid-config add exchange topic myExchange
>qpid-config del topic myExchange
Failed: Exception: Exception from Agent: {u'error_code': 7, u'error_text': 'not-found: Delete failed. No such topic: myExchange (/home/eallen/rpmbuild/BUILD/qpid-0.22/cpp/src/qpid/broker/amqp/Topic.cpp:141)'}
with amqp.so not loaded
>qpid-config add exchange topic myExchange
>qpid-config del topic myExchange
>
>qpid-config list exchange
Objects of type 'exchange'
name type durable
======================================
direct False
amq.direct direct True
amq.fanout fanout True
amq.match headers True
amq.topic topic True
qmf.default.direct direct False
qmf.default.topic topic False
qpid.management topic False
Thanks,
Ernie Allen
Re: Review Request 20328: QPID-5697 An exchange is deleted by a request for
topic removal
Posted by Gordon Sim <gs...@redhat.com>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/20328/#review40276
-----------------------------------------------------------
Ship it!
Ship It!
- Gordon Sim
On April 14, 2014, 5:02 p.m., Ernie Allen wrote:
>
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/20328/
> -----------------------------------------------------------
>
> (Updated April 14, 2014, 5:02 p.m.)
>
>
> Review request for qpid, Gordon Sim and Ted Ross.
>
>
> Repository: qpid
>
>
> Description
> -------
>
> When a topic delete request is issued and the topic does not exist and there is an exchange of that name, the exchange is deleted which is obviously not intended. When the topic exists the topic is deleted first, see additional info for more details.
>
> Steps to Reproduce:
> 1. qpid-config add exchange fanout myExchange
> 2. qpid-config del topic myExchange
> Exchange myExchange removed instead of 'Topic not found' exception
>
> If the amqp.so module is loaded, the request to delete the topic should be handled by the registered objectFactory Topic::deleteObject().
> Rather than return false when a request to delete the topic is received and the topic is not found, this patch throws a NotFoundException.
>
> The code in Broker::deleteObject() that treats topic as a synonym for exchange was left intact in case the amqp.so module is not loaded. In that case the code will function as before and topic deletes will delete exchanges.
>
>
> Diffs
> -----
>
> /trunk/qpid/cpp/src/qpid/broker/amqp/Topic.cpp 1587241
>
> Diff: https://reviews.apache.org/r/20328/diff/
>
>
> Testing
> -------
>
> with amqp.so loaded
> >qpid-config add exchange topic myExchange
> >qpid-config del topic myExchange
> Failed: Exception: Exception from Agent: {u'error_code': 7, u'error_text': 'not-found: Delete failed. No such topic: myExchange (/home/eallen/rpmbuild/BUILD/qpid-0.22/cpp/src/qpid/broker/amqp/Topic.cpp:141)'}
>
> with amqp.so not loaded
> >qpid-config add exchange topic myExchange
> >qpid-config del topic myExchange
> >
> >qpid-config list exchange
> Objects of type 'exchange'
> name type durable
> ======================================
> direct False
> amq.direct direct True
> amq.fanout fanout True
> amq.match headers True
> amq.topic topic True
> qmf.default.direct direct False
> qmf.default.topic topic False
> qpid.management topic False
>
>
> Thanks,
>
> Ernie Allen
>
>