• Jon Olav Hauglid's avatar
    Bug #56448 Assertion failed: ! is_set() with second xa end · 5f352c28
    Jon Olav Hauglid authored
    The problem was that issuing XA END when the XA transaction was
    already ended, caused an assertion. This assertion tests that 
    the server does not try to send OK to the client if there has
    already been an error reported. The bug was only noticeable on
    debug versions of the server.
    
    The reason for the problem was that the trans_xa_end() function
    reported success if the transaction was at XA_IDLE state at the
    end regardless of any errors occured during processing of
    trans_xa_end(). So if the transaction state was XA_IDLE already,
    reported errors would be ignored.
    
    This patch fixes the problem by having trans_xa_end() take into
    consideration any reported errors. The patch also fixes a similar
    bug with XA PREPARE.
    
    Test case added to xa.test.
    5f352c28
transaction.cc 18.6 KB