summaryrefslogtreecommitdiff
path: root/mysql-test/extra
diff options
context:
space:
mode:
authorKristian Nielsen <knielsen@knielsen-hq.org>2017-04-20 16:07:27 +0200
committerKristian Nielsen <knielsen@knielsen-hq.org>2017-04-21 10:30:16 +0200
commitda9decdccf102f639bae43c8cdc7594b6dcbcb41 (patch)
tree1acda78ea504c5bd8d240c3e1456921a40f9a1d1 /mysql-test/extra
parentfdf2d407707faf05b8b7d67662a70cc5537d15aa (diff)
downloadmariadb-git-da9decdccf102f639bae43c8cdc7594b6dcbcb41.tar.gz
Use separate connection for START SLAVE in rpl_deadlock.test
START SLAVE is documented to implicitly commit any active transaction. So do this in a separate connection, to not break the lock on which the test case depends. Found during MDEV-12179 development, but independent of this, so done in a separate commit.
Diffstat (limited to 'mysql-test/extra')
-rw-r--r--mysql-test/extra/rpl_tests/rpl_deadlock.test8
1 files changed, 8 insertions, 0 deletions
diff --git a/mysql-test/extra/rpl_tests/rpl_deadlock.test b/mysql-test/extra/rpl_tests/rpl_deadlock.test
index f7a1e71d5d9..e9191d5fcd8 100644
--- a/mysql-test/extra/rpl_tests/rpl_deadlock.test
+++ b/mysql-test/extra/rpl_tests/rpl_deadlock.test
@@ -46,6 +46,9 @@ BEGIN;
SELECT * FROM t1 FOR UPDATE;
# Save variable 'Slave_retried_transactions' before deadlock
let $slave_retried_transactions= query_get_value(SHOW GLOBAL STATUS LIKE 'Slave_retried_transactions', Value, 1);
+# Run the START SLAVE in a separate connection. Otherwise it terminates
+# the SELECT FOR UPDATE transaction (START SLAVE does implicit COMMIT!).
+connection slave1;
START SLAVE;
# Wait until SQL thread blocked: variable 'Slave_retried_transactions' will incremented
let $status_var= Slave_retried_transactions;
@@ -53,6 +56,7 @@ let $status_var_value= $slave_retried_transactions;
let $status_type= GLOBAL;
let $status_var_comparsion= >;
--source include/wait_for_status_var.inc
+connection slave;
SELECT COUNT(*) FROM t2;
COMMIT;
sync_with_master;
@@ -78,9 +82,11 @@ BEGIN;
# Hold lock
SELECT * FROM t1 FOR UPDATE;
# Wait until slave stopped with error 'Lock wait timeout exceeded'
+connection slave1;
START SLAVE;
let $slave_sql_errno= 1205;
--source include/wait_for_slave_sql_error.inc
+connection slave;
SELECT COUNT(*) FROM t2;
COMMIT;
--source include/start_slave.inc
@@ -109,9 +115,11 @@ BEGIN;
# Hold lock
SELECT * FROM t1 FOR UPDATE;
# Wait until slave stopped with error 'Lock wait timeout exceeded'
+connection slave1;
START SLAVE;
let $slave_sql_errno= 1205;
--source include/wait_for_slave_sql_error.inc
+connection slave;
SELECT COUNT(*) FROM t2;
COMMIT;
--source include/start_slave.inc