Steven Shaw (JIRA) wrote:
Transactions not atomic in the face of fail over
------------------------------------------------

                 Key: QPID-142
                 URL: http://issues.apache.org/jira/browse/QPID-142
             Project: Qpid
          Issue Type: Bug
          Components: Dot Net Client, Java Client
            Reporter: Steven Shaw


When some messages are already published in a transaction when fail over 
occurs, those messages will be lost.

Options seem to be:

  1. Remembering and replaying sent messages (in a Tx)
  2. Aborting any in-flight transactions on failover

1 could be costly in terms of memory for applications using transaction. 2 
could be annoying for applications requiring the use of retry loops (however 
these retry loops are often necessary in any case and can sometimes be injected 
via AOP).

I asked Gordon's opinion and he favored (2) as well.

In addition to this we need to ensure that the broker issues a Channel.Close 
when it gets a Tx.Commit without a prior Tx.Select. It's not clear what error 
code should be used. Invalid-command (503) looks close but is a hard-error. 
Check the amqp-dev list for discussion on this topic.


I think option 2 is better as this issue should be able to be delt with better, with the new transport proposal released with the 0-9 spec next month.

Carl.

Reply via email to