summaryrefslogtreecommitdiff
path: root/mysql-test/t/rpl_deadlock.test
diff options
context:
space:
mode:
Diffstat (limited to 'mysql-test/t/rpl_deadlock.test')
-rw-r--r--mysql-test/t/rpl_deadlock.test113
1 files changed, 0 insertions, 113 deletions
diff --git a/mysql-test/t/rpl_deadlock.test b/mysql-test/t/rpl_deadlock.test
deleted file mode 100644
index c74ed989ece..00000000000
--- a/mysql-test/t/rpl_deadlock.test
+++ /dev/null
@@ -1,113 +0,0 @@
-# See if slave restarts the transaction after failing on an InnoDB deadlock error.
-
-# Note: testing what happens when too many retries is possible, but
-# needs large waits when running with --debug, so we don't do it.
-# The same way, this test may not test what is expected when run
-# under Valgrind, timings are too short then (with --valgrind I
-# (Guilhem) have seen the test manage to provoke lock wait timeout
-# error but not deadlock error; that is ok as code deals with the two
-# errors in exactly the same way.
-# We don't 'show status like 'slave_retried_transactions'' because this
-# is not repeatable (depends on sleeps).
-
-source include/have_innodb.inc;
-source include/master-slave.inc;
-
-connection master;
-create table t1 (a int not null, key(a)) engine=innodb;
-create table t2 (a int not null, key(a)) engine=innodb;
-create table t3 (a int) engine=innodb;
-create table t4 (a int) engine=innodb;
-show variables like 'slave_transaction_retries';
-sync_slave_with_master;
-
-show create table t1;
-show create table t2;
-show variables like 'slave_transaction_retries';
-stop slave;
-
-# 1) Test deadlock
-
-connection master;
-begin;
-# Let's keep BEGIN and the locked statement in two different relay logs.
-let $1=200;
-disable_query_log;
-while ($1)
-{
- eval insert into t3 values( $1 );
- dec $1;
-}
-enable_query_log;
-insert into t3 select * from t2 for update;
-insert into t1 values(1);
-commit;
-save_master_pos;
-
-connection slave;
-begin;
-# Let's make our transaction large so that it's slave who is chosen as
-# victim
-let $1=1000;
-disable_query_log;
-while ($1)
-{
- eval insert into t4 values( $1 );
- dec $1;
-}
-enable_query_log;
-select * from t1 for update;
-start slave;
---real_sleep 3 # hope that slave is blocked now
-insert into t2 values(22); # provoke deadlock, slave should be victim
-commit;
-sync_with_master;
-select * from t1; # check that slave succeeded finally
-select * from t2;
-# check that no error is reported
---replace_column 1 # 8 # 9 # 23 # 33 #
---replace_result $MASTER_MYPORT MASTER_MYPORT
-show slave status;
-
-# 2) Test lock wait timeout
-
-stop slave;
-change master to master_log_pos=532; # the BEGIN log event
-begin;
-select * from t2 for update; # hold lock
-start slave;
---real_sleep 10 # slave should have blocked, and be retrying
-commit;
-sync_with_master;
-select * from t1; # check that slave succeeded finally
-select * from t2;
-# check that no error is reported
---replace_column 1 # 8 # 9 # 23 # 33 #
---replace_result $MASTER_MYPORT MASTER_MYPORT
-show slave status;
-
-# Now we repeat 2), but with BEGIN in the same relay log as
-# COMMIT (to see if seeking into hot log is ok).
-
-set global max_relay_log_size=0;
-
-# This is really copy-paste of 2) of above
-stop slave;
-change master to master_log_pos=532;
-begin;
-select * from t2 for update;
-start slave;
---real_sleep 10
-commit;
-sync_with_master;
-select * from t1;
-select * from t2;
---replace_column 1 # 8 # 9 # 11 # 23 # 33 #
---replace_result $MASTER_MYPORT MASTER_MYPORT
-show slave status;
-
-connection master;
-drop table t1,t2,t3,t4;
-sync_slave_with_master;
-
-# End of 4.1 tests