• Davi Arnaut's avatar
    Bug#28323: Server crashed in xid cache operations · 9ad8d644
    Davi Arnaut authored
    The problem was that the server did not robustly handle a
    unilateral roll back issued by the Resource Manager (RM)
    due to a resource deadlock within the transaction branch.
    By not acknowledging the roll back, the server (TM) would
    eventually corrupt the XA transaction state and crash.
    
    The solution is to mark the transaction as rollback-only
    if the RM indicates that it rolled back its branch of the
    transaction.
    
    mysql-test/r/xa.result:
      Add test case result for Bug#28323
    mysql-test/t/xa.test:
      Add test case for Bug#28323
    sql/handler.cc:
      Reset XID only at the end of the global transaction.
    sql/share/errmsg.txt:
      Add new error codes.
    sql/sql_class.h:
      Remember the error reported by the Resource Manager.
    sql/sql_parse.cc:
      Rollback the transaction if the Resource Manager reported
      a error and rolled back its branch of the transaction.
    9ad8d644
handler.cc 77.6 KB