• Dmitry Shulga's avatar
    This patch fixes bug#14729757 - MY_HASH_SEARCH(&XID_CACHE, · 0109a65c
    Dmitry Shulga authored
                                    XID_STATE->XID.KEY(),
                                    XID_STATE->XID.KEY_LENGTH())==0
      
    This bug is a regression of bug#11759534 - 51855: RACE CONDITION
                                               IN XA START.
      
    The reason for regression is that the changes that fixes the original
    bug wasn't merged from mysql-5.1 into mysql-5.5 and mysql-trunk.
    Only null-merge was done for the patch changeset.
      
    To incorporate lost changes the manual merge have been done.
      
    Additionally the call of trans_rolback() was added into trans_xa_start()
    in case if xid_cache_insert is failed() after transaction has been started.
    If we don't call trans_rollback() we would never reset the flag
    SERVER_STATUS_IN_TRANS in THD::server_status and therefore all subsequent
    attempts to execute XA START in the connection where the error was occurred
    will be failed since thd->in_active_multi_stmt_transaction() will return
    the true every time when trans_xa_start is called.
      
    The latest changes were absent in patch for mysql-5.1
    0109a65c
transaction.cc 20.4 KB