diff options
Diffstat (limited to 'mysql-test/suite/galera/t/MW-286.test')
-rw-r--r-- | mysql-test/suite/galera/t/MW-286.test | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/mysql-test/suite/galera/t/MW-286.test b/mysql-test/suite/galera/t/MW-286.test new file mode 100644 index 00000000..9c849861 --- /dev/null +++ b/mysql-test/suite/galera/t/MW-286.test @@ -0,0 +1,58 @@ +# +# MW-286 Spurious deadlock error after error with wsrep_desync and wsrep_on +# + +--source include/galera_cluster.inc +--source include/have_innodb.inc +--source include/have_debug_sync.inc + +--connection node_1 + +CREATE TABLE t1 (f1 INTEGER) Engine=InnoDB; +# Insert some values before the ALTER +INSERT INTO t1 (f1) VALUES (1), (2), (3); + +# +# run ALTER with no wsrep replication +# +--connection node_2 +SET GLOBAL wsrep_desync = TRUE; +SET wsrep_on = FALSE; + +# +# stop ALTER processing after it has acquired exclusive MDL lock +# +SET SESSION debug_sync = "alter_table_inplace_after_lock_upgrade SIGNAL mdl_locked WAIT_FOR mdl_continue"; + +--send ALTER TABLE t1 ADD PRIMARY KEY (f1); + +--connect node_2a, 127.0.0.1, root, , test, $NODE_MYPORT_2 +--connection node_2a +SET SESSION debug_sync = "now WAIT_FOR mdl_locked"; + +# +# replicate conflicting insert from node_1 +# +--connection node_1 +INSERT INTO t1(f1) VALUES (11); + +# +# let parked ALTER processing to continue after the conflict +# +--connection node_2a +SET debug_sync = "now SIGNAL mdl_continue"; +SET debug_sync='RESET'; + +# +# ALTER should have been aborted with query interupted error code +# +--connection node_2 +--error ER_QUERY_INTERRUPTED +--reap + +SET wsrep_on = TRUE; +SET GLOBAL wsrep_desync = FALSE; + +--connection node_1 + +DROP TABLE t1; |