Update patch set 7
Patch Set 7: > Patch Set 6: > > > Patch Set 5: > > > > > Patch Set 3: > > > > > > > Patch Set 2: > > > > am gonna do an update for that ( if that is ok ) > > > > > > Go for it, but I would suggest some tweaks because my previous comment does not handle everything as well as it should. > > > > > > - Under the Connection class, set self.durable = (self.amqp_durable_queues or self.rabbit_quorum_queues) > > > > > > - Still under Connection, all of the places where we use "durable=self.amqp_durable_queues" should instead be "durable=self.durable" > > > > > > - The _get_queue_arguments function should also take an additional parameter for "durable" and set 'x-queue-type' *only* if durable=True (in addition to rabbit_quorum_queues=True as it is now). > > > > > > This is all due to the fact that even if amqp_durable_queues is True, only a subset of queues are actually declared as durable. For example, direct_send sets durable=False regardless of the value of amqp_durable_queues. So the queue cannot have x-queue-type set in the direct_send case. > > > > > > In the end I think this gets us what we want: the behavior of rabbit_quorum_queues is identical to the behavior of amqp_durable_queues, except that 1-for-1 where we would have used a "classic+durable" queue previously, we now use "quorum+durable". In the instances where previously we would have used "classic+non-durable", we continue to do so. > > > > I tried this, and it didn't quite work because of: > > > > Sep 15 16:43:35 fedora nova-compute[1343170]: ERROR nova amqp.exceptions.PreconditionFailed: Exchange.declare: (406) PRECONDITION_FAILED - inequivalent arg 'durable' for exchange 'nova' in vhost 'nova_cell1': received 'true' but current is 'false' > > > > I think the key bit here is that on the '/' vhost, it's getting set correctly: > > > > # rabbitmqctl list_exchanges --vhost / name durable | grep nova > > nova true > > > > However on the 'nova_cell1' vhost, it's getting set to false: > > > > # rabbitmqctl list_exchanges --vhost nova_cell1 name durable | grep nova > > Listing exchanges for vhost nova_cell1 ... > > nova false > > > > So it seems that something is not quite working in the case where cells are used. It'll take me a bit to figure that out because I'm not very familiar on how it all works. > > it make sense that everything should be durable but the fan out and DM so i changed the line blow > 1178 durable=self._durable(), i think u should run `./rabbitmqadmin delete exchange name='myexchange'` to delete the exchange since maybe its created on old run before change Patch-set: 7 Reviewer: Gerrit User 31039 <31039@4a232e18-c5a9-48ee-94c0-e04e7cca6543>
This commit is contained in:
parent
b7dab78920
commit
cee4e52556