Hi,<div><br></div><div>Does this version include the new &quot;interleaved message delivery&quot; stuff for basic.deliver?</div><div><br></div><div>Thanks,</div><div>--Robin<br><br><div class="gmail_quote">On Thu, Feb 3, 2011 at 2:45 PM, Matthew Sackman <span dir="ltr">&lt;<a href="mailto:matthew@rabbitmq.com">matthew@rabbitmq.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div class="im">On Thu, Feb 03, 2011 at 02:22:14PM +0000, Simon MacMullen wrote:<br>
&gt; The RabbitMQ team is pleased to announce the release of RabbitMQ<br>
&gt; 2.3.1.<br>
&gt;<br>
&gt; This release fixes a small number of bugs, in particular one serious<br>
&gt; bug in 2.3.0 which could lead to queue processes crashing.<br>
<br>
</div>As a result of the severity of the bug that&#39;s been fixed, we do not<br>
advise anyone to use 2.3.0.<br>
<br>
The bug fixed is a race condition that can cause any queue to violate an<br>
enforced invariant of the queue during an AMQP transaction commit. If<br>
the invariant is violated, then the queue will crash instantly, losing<br>
all non-persisted messages within the queue.<br>
<br>
The bug was introduced in the process of fixing another bug - a bug that<br>
had existed since the 2.0.0 release, and which could lead, in the event<br>
of a crash, to more persistent messages being lost than should be. To<br>
explain that a little further: persistent messages are not written to<br>
disk immediately because there may be opportunities to optimise out the<br>
write completely, and additionally it is not performant to issue lots of<br>
tiny I/O write operations. Consequently, there are various caches, and<br>
timeouts which ensure that messages that are being written to disk are<br>
done so promptly enough but also efficiently enough. The bug found was<br>
that one of the timers related to this process was not being reset<br>
correctly. As a result, a long period of time could occur before<br>
messages were pushed out to disk in some cases, leading to a bigger<br>
window for messages to be potentially lost in. This would affect not<br>
just how messages are pushed to disk in the case of memory pressure, but<br>
also latency of transaction commits, and probably some scenarios too.<br>
<br>
In fixing this bug, the critical bug discovered in 2.3.0 was<br>
accidentally introduced. Both bugs do not exist in 2.3.1.<br>
<br>
By being a race condition, it managed to not get triggered in testing.<br>
Indeed even now, knowing where the bug lies, I have not been able to<br>
trigger it.<br>
<br>
I hope that sheds some light on the situation.<br>
<br>
Matthew<br>
_______________________________________________<br>
rabbitmq-discuss mailing list<br>
<a href="mailto:rabbitmq-discuss@lists.rabbitmq.com">rabbitmq-discuss@lists.rabbitmq.com</a><br>
<a href="https://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss" target="_blank">https://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss</a><br>
</blockquote></div><br></div>