No subject
Tue Apr 12 10:32:41 BST 2011
Regards,
Gavin
On Friday, May 13, 2011 at 8:10 AM, Matthew Sackman wrote:
> On Fri, May 13, 2011 at 10:58:34AM +0100, Simon MacMullen wrote:
> > Depends how you define "bad idea". In terms of today's
> > implementation you should be fine, as long as you don't expect (for
> > example) to be able to flip the durability field and have that mean
> > something.
>
> It's a very bad idea. For one thing, Rabbit assumes that the queue
> record is unaltered after the queue has been created. Consequently the
> amqqueue_process process takes a copy of the #amqqueue record and holds
> it in its state. It never updates it. So if you change the copy in
> mnesia, then you subsquently have divergence between the queue process's
> copy, and the mnesia copy. This can lead to suprising results.
>
> For example if you issue amqqueue:info on a queue then it'll go through
> to the queue and not mnesia. Thus you'll find that results in management
> and in rabbitmqctl now don't match.
>
> You then have things like the property that queue redeclaration should
> fail if arguments do not match (semantically) the original declaration.
> But this only goes as far as mnesia. Consequently, you will have the
> queue, if you interrogate it, claiming its arguments are one thing, but
> if you try to redeclare the queue with those arguments, you can find
> it'll fail because the mnesia copy is different.
>
> Finally, you'll have the fact that if the broker is restarted, you'll
> have the queues recovered with their arguments taken from mnesia. So
> suddenly on startup, you'll have queues being restarted with different
> arguments from that which they were last running with.
>
> Matthew
> _______________________________________________
> rabbitmq-discuss mailing list
> rabbitmq-discuss at lists.rabbitmq.com
> https://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss
>
--4dcd5899_79838cb2_19f6
Content-Type: text/html; charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline
<div>
<div>
<span>Matthew,</span></div><div><span><br></span></div><d=
iv><span>=46rom your perspective is there any way to do this that's not a=
bad idea while not impacting production queue use=3F Your points are val=
id, however since they're arguments and Rabbit doesn't care about or use =
arguments, I wonder how impacting it can be=3F</span></div><div><br></div=
><div>Regards,</div><div><br></div><div>Gavin</div><div><span><br></span>=
</div><div><span><br></span></div><div>
<span></span>
=20
<=21-- <p style=3D=22color: =23a0a0a0;=22>On =46riday, Ma=
y 13, 2011 at 8:10 AM, Matthew Sackman wrote:</p> -->
<p style=3D=22color: =23a0a0a0;=22>On =46riday, May 13, 2=
011 at 8:10 AM, Matthew Sackman wrote:</p>
<blockquote type=3D=22cite=22 style=3D=22border-left-styl=
e:solid;border-width:1px;margin-left:0px;padding-left:10px;=22>
<span><div><div>On =46ri, May 13, 2011 at 10:58:34AM =
+0100, Simon MacMullen wrote:<br><blockquote type=3D=22cite=22><div>Depen=
ds how you define =22bad idea=22. In terms of today's<br>implementation y=
ou should be fine, as long as you don't expect (for<br>example) to be abl=
e to flip the durability field and have that mean<br>something.<br></div>=
</blockquote><br>It's a very bad idea. =46or one thing, Rabbit assumes th=
at the queue<br>record is unaltered after the queue has been created. Con=
sequently the<br>amqqueue=5Fprocess process takes a copy of the =23amqque=
ue record and holds<br>it in its state. It never updates it. So if you ch=
ange the copy in<br>mnesia, then you subsquently have divergence between =
the queue process's<br>copy, and the mnesia copy. This can lead to supris=
ing results.<br><br>=46or example if you issue amqqueue:info on a queue t=
hen it'll go through<br>to the queue and not mnesia. Thus you'll find tha=
t results in management<br>and in rabbitmqctl now don't match.<br><br>You=
then have things like the property that queue redeclaration should<br>fa=
il if arguments do not match (semantically) the original declaration.<br>=
But this only goes as far as mnesia. Consequently, you will have the<br>q=
ueue, if you interrogate it, claiming its arguments are one thing, but<br=
>if you try to redeclare the queue with those arguments, you can find<br>=
it'll fail because the mnesia copy is different.<br><br>=46inally, you'll=
have the fact that if the broker is restarted, you'll<br>have the queues=
recovered with their arguments taken from mnesia. So<br>suddenly on star=
tup, you'll have queues being restarted with different<br>arguments from =
that which they were last running with.<br><br>Matthew<br>=5F=5F=5F=5F=5F=
=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=
=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F<br>rabbitmq-discuss m=
ailing list<br><a href=3D=22mailto:rabbitmq-discuss=40lists.rabbitmq.com=22=
>rabbitmq-discuss=40lists.rabbitmq.com</a><br><a href=3D=22https://lists.=
rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss=22>https://lists.r=
abbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss</a><br></div></div>=
</span>
=20
=20
=20
=20
</blockquote>
=20
<div>
<br>
</div>
</div>
</div>
--4dcd5899_79838cb2_19f6--
More information about the rabbitmq-discuss
mailing list