mirror of
https://github.com/MariaDB/server.git
synced 2025-01-29 10:14:19 +01:00
MDEV-15217 Assertion `thd->transaction.xid_state.xid.is_null()' failed
in trans_xa_start. THD.transaction.xid_state.xid.rm_error should be cleaned as the thread ends.
This commit is contained in:
parent
28777046b4
commit
cd109592ca
3 changed files with 59 additions and 1 deletions
|
@ -270,3 +270,25 @@ XA ROLLBACK 'xid1';
|
|||
connection default;
|
||||
DROP TABLE t1, t2;
|
||||
disconnect con2;
|
||||
CREATE TABLE t1 (pk INT PRIMARY KEY) ENGINE=InnoDB;
|
||||
CREATE TABLE t2 (pk INT PRIMARY KEY) ENGINE=InnoDB;
|
||||
INSERT INTO t2 VALUES (1),(2);
|
||||
CREATE TABLE t3 (i INT) ENGINE=InnoDB;
|
||||
XA BEGIN 'xid1';
|
||||
REPLACE INTO t1 SELECT * FROM t2;
|
||||
connect con1,localhost,root,,test;
|
||||
XA BEGIN 'xid2';
|
||||
INSERT INTO t1 SELECT * FROM t2;
|
||||
connection default;
|
||||
REPLACE INTO t2 SELECT * FROM t2;
|
||||
connection con1;
|
||||
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
|
||||
disconnect con1;
|
||||
connect con2,localhost,root,,test;
|
||||
INSERT INTO t3 VALUES (1);
|
||||
XA BEGIN 'xid3';
|
||||
disconnect con2;
|
||||
connection default;
|
||||
XA END 'xid1';
|
||||
XA ROLLBACK 'xid1';
|
||||
DROP TABLE t1, t2, t3;
|
||||
|
|
|
@ -394,6 +394,41 @@ DROP TABLE t1, t2;
|
|||
disconnect con2;
|
||||
|
||||
|
||||
# Wait till all disconnects are completed
|
||||
#
|
||||
# MDEV 15217 Assertion `thd->transaction.xid_state.xid.is_null()' failed in trans_xa_start.
|
||||
#
|
||||
CREATE TABLE t1 (pk INT PRIMARY KEY) ENGINE=InnoDB;
|
||||
CREATE TABLE t2 (pk INT PRIMARY KEY) ENGINE=InnoDB;
|
||||
INSERT INTO t2 VALUES (1),(2);
|
||||
CREATE TABLE t3 (i INT) ENGINE=InnoDB;
|
||||
|
||||
XA BEGIN 'xid1';
|
||||
REPLACE INTO t1 SELECT * FROM t2;
|
||||
|
||||
--connect (con1,localhost,root,,test)
|
||||
XA BEGIN 'xid2';
|
||||
--send
|
||||
INSERT INTO t1 SELECT * FROM t2;
|
||||
|
||||
--connection default
|
||||
REPLACE INTO t2 SELECT * FROM t2;
|
||||
|
||||
--connection con1
|
||||
--error ER_LOCK_DEADLOCK
|
||||
--reap
|
||||
--disconnect con1
|
||||
|
||||
--connect (con2,localhost,root,,test)
|
||||
INSERT INTO t3 VALUES (1);
|
||||
XA BEGIN 'xid3';
|
||||
|
||||
|
||||
#Cleanup
|
||||
--disconnect con2
|
||||
--connection default
|
||||
XA END 'xid1';
|
||||
XA ROLLBACK 'xid1';
|
||||
DROP TABLE t1, t2, t3;
|
||||
|
||||
--source include/wait_until_count_sessions.inc
|
||||
|
||||
|
|
|
@ -1462,6 +1462,7 @@ void THD::cleanup(void)
|
|||
close_temporary_tables();
|
||||
|
||||
transaction.xid_state.xa_state= XA_NOTR;
|
||||
transaction.xid_state.rm_error= 0;
|
||||
trans_rollback(this);
|
||||
xid_cache_delete(this, &transaction.xid_state);
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue