pulp/pulp — pull request #1133 by bmbouter (2014-08-26 19:42:59+00:00)
Title: 1133133 - Improves dispatching reliability for reservation tasks

https://bugzilla.redhat.com/show_bug.cgi?id=1133133

The root cause of this is a stateful behavior in celery that does not recover well when you restart a receiver. That is an unusual thing because message brokers are designed to abstract senders and receivers. I filed an [upstream celery bug](https://github.com/celery/celery/issues/2216) about it, and posted some about how it affects pulp in [comment1 on the BZ](https://bugzilla.redhat.com/show_bug.cgi?id=1133133#c1).

I've implemented a workaround here based on the bindings that I observed were automatically created with the dedicated queue feature. This causes reservation tasks to always get dispatched into the right queue with less dependency on external state (ie: bindings in this case).

This comes with tests, and it should cover all new code paths. I also put some [instructions for QE to verify](https://bugzilla.redhat.com/show_bug.cgi?id=1133133#c2) this with.