1# 2# Make sure pending LOCK TABLES doesn't block BACKUP STAGE 3# 4CREATE TABLE t1(a INT); 5LOCK TABLE t1 READ; 6# 7connect con1,localhost,root,,; 8SET DEBUG_SYNC= 'mdl_acquire_lock_wait SIGNAL ready'; 9LOCK TABLE t1 WRITE; 10# 11connect con2,localhost,root,,; 12SET DEBUG_SYNC= 'now WAIT_FOR ready'; 13BACKUP STAGE START; 14BACKUP STAGE FLUSH; 15BACKUP STAGE BLOCK_DDL; 16BACKUP STAGE END; 17disconnect con2; 18# 19connection default; 20UNLOCK TABLES; 21# 22connection con1; 23UNLOCK TABLES; 24disconnect con1; 25# 26connection default; 27DROP TABLE t1; 28SET DEBUG_SYNC= 'RESET'; 29# 30# Demonstrates a deadlock if BACKUP namespace is reorder after SCHEMA. 31# Culprit is ALTER TABLE taking SCHEMA lock on target database after 32# BACKUP lock was acquired. 33# 34CREATE DATABASE test2; 35CREATE TABLE t1(a INT) ENGINE=InnoDB; 36SET DEBUG_SYNC='alter_opened_table SIGNAL ready WAIT_FOR go'; 37ALTER TABLE t1 RENAME TO test2.t1; 38connect con1,localhost,root,,; 39SET DEBUG_SYNC='now WAIT_FOR ready'; 40BACKUP STAGE START; 41SET DEBUG_SYNC='mdl_acquire_lock_wait SIGNAL ready1'; 42BACKUP STAGE BLOCK_DDL; 43connect con2,localhost,root,,; 44SET DEBUG_SYNC='now WAIT_FOR ready1'; 45SET DEBUG_SYNC='mdl_acquire_lock_wait SIGNAL go'; 46DROP DATABASE test2; 47connection default; 48connection con1; 49disconnect con1; 50connection con2; 51disconnect con2; 52connection default; 53SET DEBUG_SYNC='reset'; 54