summaryrefslogtreecommitdiff
path: root/sql/share
diff options
context:
space:
mode:
authorDavi Arnaut <Davi.Arnaut@Sun.COM>2008-10-21 16:07:31 -0200
committerDavi Arnaut <Davi.Arnaut@Sun.COM>2008-10-21 16:07:31 -0200
commit41dd7b6b92ce8e3c2ccb5aa9ebeef12be746793e (patch)
tree4b9ca24344887ec93377783fd1b067ab116570b6 /sql/share
parenta83f5b18efaa54df3b56c86c1ab9244280447f24 (diff)
downloadmariadb-git-41dd7b6b92ce8e3c2ccb5aa9ebeef12be746793e.tar.gz
Bug#28323: Server crashed in xid cache operations
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.
Diffstat (limited to 'sql/share')
-rw-r--r--sql/share/errmsg.txt4
1 files changed, 4 insertions, 0 deletions
diff --git a/sql/share/errmsg.txt b/sql/share/errmsg.txt
index 0916ad56cef..c688ba88b7b 100644
--- a/sql/share/errmsg.txt
+++ b/sql/share/errmsg.txt
@@ -5645,3 +5645,7 @@ ER_LOAD_DATA_INVALID_COLUMN
eng "Invalid column reference (%-.64s) in LOAD DATA"
ER_LOG_PURGE_NO_FILE
eng "Being purged log %s was not found"
+ER_XA_RBTIMEOUT XA106
+ eng "XA_RBTIMEOUT: Transaction branch was rolled back: took too long"
+ER_XA_RBDEADLOCK XA102
+ eng "XA_RBDEADLOCK: Transaction branch was rolled back: deadlock was detected"