qpid-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Alex Rudyy (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (QPID-6678) Deleting an exchange that is referenced as alternate apparently succeeds but marks the exchange as DELETED
Date Tue, 15 Sep 2015 16:50:46 GMT

    [ https://issues.apache.org/jira/browse/QPID-6678?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14745714#comment-14745714
] 

Alex Rudyy commented on QPID-6678:
----------------------------------

Keith,
I addressed your comments 1-3 in commit under revision [r1703250|https://svn.apache.org/r1703250].
Additionally, I executed tests from tests/src/py/qpid_tests/broker_0_10/alternate_exchange.py
against Broker and found an issue with not setting "attain state future" when state transition
fails. I addressed the problem in the same commit.
Regarding, adding tests for exercising 'if-unsed' field, I am hesitating to add them as Qpid
cpp broker does not support 'if-unsed'. I wrote a test for 0.10 protocol but did not commit
it:
{code}
--- qpid/tests/src/py/qpid_tests/broker_0_10/exchange.py
+++ qpid/tests/src/py/qpid_tests/broker_0_10/exchange.py
@@ -556,3 +556,20 @@ class AutodeleteTests(TestHelper, StandardExchangeVerifier):
         self.session.exchange_declare(exchange="e", type="headers", auto_delete=True)
         self.verifyHeadersExchange("e", unbind=True)
         self.checkNotExists("e");
+
+
+class DeleteMethodExchangeTests(TestHelper):
+
+    """
+    If 'if-unused' set, the server will only delete the exchange if it has no queue bindings.
+    If the exchange has queue bindings the server does not delete it but raises an exception
instead.
+    """
+    def testDeleteUsedExchangeWhenIfUnusedTrue(self):
+        try:
+            self.session.exchange_declare(exchange="test-exchange", type="direct")
+            self.session.queue_declare(queue="test-queue")
+            self.session.exchange_bind(queue="test-queue", exchange="test-exchange", binding_key="test-queue")
+            self.session.exchange_delete(exchange="test-exchange", if_unused=True)
+            self.fail("Expected 406 for deletion of exchange in use wih if-unused=True")
+        except SessionException, e:
+            self.assertEquals(406, e.args[0].error_code)

{code}

Could you please review the changes?

> Deleting an exchange that is referenced as alternate apparently succeeds but marks the
exchange as DELETED
> ----------------------------------------------------------------------------------------------------------
>
>                 Key: QPID-6678
>                 URL: https://issues.apache.org/jira/browse/QPID-6678
>             Project: Qpid
>          Issue Type: Bug
>          Components: Java Broker
>    Affects Versions: 0.32, qpid-java-6.0
>            Reporter: Keith Wall
>            Assignee: Alex Rudyy
>         Attachments: 0001-QPID-6678-Deletion-of-exchanges-set-as-alternate-exc.patch
>
>
> If I create two exchanges using the Web Management, exch1 and exch2, and make *exch2*
the alternate exchange of *exch1*, I expect to be prevented from deleting exch2 as exch1 refers
to it.   This does not happen.  If I delete *exch2* using Management, the operation apparently
succeeds, but the object is recorded in the store as having desiredState DELETED.  If I then
go on to restart the Broker, the exchange is removed from the store.  If I restart the Broker
a second time, the VH goes into ERROR state as exch1 has a non-existent alternate exchange.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@qpid.apache.org
For additional commands, e-mail: dev-help@qpid.apache.org


Mime
View raw message