<feed xmlns='http://www.w3.org/2005/Atom'>
<title>delta/rabbitmq-server.git, branch bug19489</title>
<subtitle>hg.rabbitmq.com: Obsolete (use rabbitmq-server-git)
</subtitle>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/rabbitmq-server.git/'/>
<entry>
<title>don't log errors during delivery</title>
<updated>2008-10-13T20:05:02+00:00</updated>
<author>
<name>Matthias Radestock</name>
<email>matthias@lshift.net</email>
</author>
<published>2008-10-13T20:05:02+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/rabbitmq-server.git/commit/?id=9f13a84c4e2032753f7f0981973b4f3422a32784'/>
<id>9f13a84c4e2032753f7f0981973b4f3422a32784</id>
<content type='text'>
If the target queue died normally we don't care, and if it died
abnormally the reason is logged by the queue supervisor. In both cases
we treat the message as unrouted.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
If the target queue died normally we don't care, and if it died
abnormally the reason is logged by the queue supervisor. In both cases
we treat the message as unrouted.
</pre>
</div>
</content>
</entry>
<entry>
<title>merge bug19332 into default</title>
<updated>2008-10-12T16:36:14+00:00</updated>
<author>
<name>Matthias Radestock</name>
<email>matthias@lshift.net</email>
</author>
<published>2008-10-12T16:36:14+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/rabbitmq-server.git/commit/?id=ba42dc1a68bf72d8bac6ee5cd46d2855c10fb2fc'/>
<id>ba42dc1a68bf72d8bac6ee5cd46d2855c10fb2fc</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>merge bug19485 into default</title>
<updated>2008-10-05T15:58:53+00:00</updated>
<author>
<name>Hubert Plociniczak</name>
<email>hubert@lshift.net</email>
</author>
<published>2008-10-05T15:58:53+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/rabbitmq-server.git/commit/?id=8c1a76ad5c03b66534444347bd8f3a9a3214a1e5'/>
<id>8c1a76ad5c03b66534444347bd8f3a9a3214a1e5</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Merged bug19219 into default</title>
<updated>2008-10-04T15:39:22+00:00</updated>
<author>
<name>Ben Hood</name>
<email>0x6e6562@gmail.com</email>
</author>
<published>2008-10-04T15:39:22+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/rabbitmq-server.git/commit/?id=edbc8f0a784fb374cb431db83bd0811a86a3a2a5'/>
<id>edbc8f0a784fb374cb431db83bd0811a86a3a2a5</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>propagate channel/connection errors when in closing state</title>
<updated>2008-10-03T12:47:01+00:00</updated>
<author>
<name>Matthias Radestock</name>
<email>matthias@lshift.net</email>
</author>
<published>2008-10-03T12:47:01+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/rabbitmq-server.git/commit/?id=9566f56e6e3ebb0cd34538a54072d441ef155e69'/>
<id>9566f56e6e3ebb0cd34538a54072d441ef155e69</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>merge bug18784</title>
<updated>2008-10-01T18:46:17+00:00</updated>
<author>
<name>Matthias Radestock</name>
<email>matthias@lshift.net</email>
</author>
<published>2008-10-01T18:46:17+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/rabbitmq-server.git/commit/?id=95290d890764703feb711f30438779bd9106f9d5'/>
<id>95290d890764703feb711f30438779bd9106f9d5</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>cosmetic refactoring</title>
<updated>2008-10-01T11:39:26+00:00</updated>
<author>
<name>Matthias Radestock</name>
<email>matthias@lshift.net</email>
</author>
<published>2008-10-01T11:39:26+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/rabbitmq-server.git/commit/?id=581757b0122d58aaac458c7f03e7576ac928453e'/>
<id>581757b0122d58aaac458c7f03e7576ac928453e</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>oops</title>
<updated>2008-09-30T13:35:46+00:00</updated>
<author>
<name>Matthias Radestock</name>
<email>matthias@lshift.net</email>
</author>
<published>2008-09-30T13:35:46+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/rabbitmq-server.git/commit/?id=61d631e74034074cb6fca2e542f1c014431e134f'/>
<id>61d631e74034074cb6fca2e542f1c014431e134f</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>modulate gen_server:call timeout when doing work in parallel</title>
<updated>2008-09-30T13:14:01+00:00</updated>
<author>
<name>Matthias Radestock</name>
<email>matthias@lshift.net</email>
</author>
<published>2008-09-30T13:14:01+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/rabbitmq-server.git/commit/?id=2d0364fd47662b0038d6fb9a7aef905c3465e7bc'/>
<id>2d0364fd47662b0038d6fb9a7aef905c3465e7bc</id>
<content type='text'>
When we fire off lots of gen_server:calls in parallel, we may create
enough work for the VM to cause the calls to time out - since the
amount of work that can actually be done in parallel is finite.

The fix is to adjust the timeout based on the total workload.

Alternatively we could not have any timeout at all, but
that is bad Erlang style since a small error somewhere could result in
stuck processes.

I moved the parallelisation - and hence timeout modulation - from the
channel into the amqqueue module, changing the API in the process -
commit, rollback and notify_down now all operate on lists of
QPids (and I've renamed the functions to make that clear). The
alternative would have been to add Timeout params to these
three functions, but I reckon the API is cleaner this way,
particularly considering that rollback doesn't actually do a call - it
does a cast and hence doesn't require a timeout - so in the
alternative API we'd either have to expose that fact indirectly by not
having a Timeout param, or have a bogus Timeout param, neither of
which is particularly appealing.

I considered making the functions take sets instead of lists,  since
that's what the channel code produces, plus sets have a more efficient
length operation. However, API-wise I reckon lists are nicer, plus it
means I can give a more precise type to dialyzer - sets would be
opaque and non-polymorphic.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When we fire off lots of gen_server:calls in parallel, we may create
enough work for the VM to cause the calls to time out - since the
amount of work that can actually be done in parallel is finite.

The fix is to adjust the timeout based on the total workload.

Alternatively we could not have any timeout at all, but
that is bad Erlang style since a small error somewhere could result in
stuck processes.

I moved the parallelisation - and hence timeout modulation - from the
channel into the amqqueue module, changing the API in the process -
commit, rollback and notify_down now all operate on lists of
QPids (and I've renamed the functions to make that clear). The
alternative would have been to add Timeout params to these
three functions, but I reckon the API is cleaner this way,
particularly considering that rollback doesn't actually do a call - it
does a cast and hence doesn't require a timeout - so in the
alternative API we'd either have to expose that fact indirectly by not
having a Timeout param, or have a bogus Timeout param, neither of
which is particularly appealing.

I considered making the functions take sets instead of lists,  since
that's what the channel code produces, plus sets have a more efficient
length operation. However, API-wise I reckon lists are nicer, plus it
means I can give a more precise type to dialyzer - sets would be
opaque and non-polymorphic.
</pre>
</div>
</content>
</entry>
<entry>
<title>Merged 19455 into default</title>
<updated>2008-09-28T14:09:47+00:00</updated>
<author>
<name>Ben Hood</name>
<email>0x6e6562@gmail.com</email>
</author>
<published>2008-09-28T14:09:47+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/rabbitmq-server.git/commit/?id=58231b7d62d25f98755800c4bdfa92d239e7a6e3'/>
<id>58231b7d62d25f98755800c4bdfa92d239e7a6e3</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
