[rabbitmq-discuss] Problem with Tx.Commit and/or Pika?
matthias at rabbitmq.com
Thu Aug 16 19:47:31 BST 2012
On 16/08/12 19:31, Matt Pietrek wrote:
> I have a simple, single threaded program using Pika's SelectConnection
> with RabbitMQ 2.8.5 that simply listens for request messages and replies
> to them.
> This code generally works - It can receive many thousands of messages
> before it croaks. When it does croak, it's with the following error:
> *CHANNEL_ERROR - unexpected command while processing 'tx.commit'
> *The code looks like this:
> def handle_delivery(channel, method, header, body):
> print "Received message"
btw, you only need to call tx_select *once* - once a channel is in tx
mode it stays in tx mode and the next transactions starts when the
previous one is committed or rolled back.
> That is, it looks like a Basic.Deliver and a Basic.Publish are sneaking
> in before the Tx.Commit-Ok comes back.
Nothing wrong with the Basic.Deliver, since that travels from the server
to client. However, seeing a basic.publish (or indeed anything) going
from from the client to the server after tx.commit has been issued but
before tx.commit-ok has been received is definitely bad. AMQP does not
permit the sending of other commands while a synchronous command is
> I suspect this is a Pika issue, but my reading of the code doesn't show
> any obvious problems.
I don't know pika, but perhaps it is possible for multiple
handle_delivery invocations to run concurrently?
More information about the rabbitmq-discuss