Patch Set 6:
> 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(),
actually my change does not make sense i will revert it
Patch-set: 6
Reviewer: Gerrit User 31039 <31039@4a232e18-c5a9-48ee-94c0-e04e7cca6543>