# # Test Flush tables with read lock along with # flush tables with read lock for compatibility. # Also, making sure all DDL and DMLs are propagated # after provider is unpaused # --source include/galera_cluster.inc --source include/have_debug.inc --source include/have_debug_sync.inc --let $galera_connection_name = node_2a --let $galera_server_number = 2 --source include/galera_connect.inc --connection node_1 CREATE TABLE t1 (id INT PRIMARY KEY) ENGINE=InnoDB; INSERT INTO t1 VALUES (1); --connection node_2 SET session wsrep_sync_wait=0; FLUSH TABLES WITH READ LOCK; --connection node_1 ALTER TABLE t1 ADD COLUMN f2 INTEGER; INSERT INTO t1 VALUES (2,3); --connection node_2a SET session wsrep_sync_wait=0; SHOW CREATE TABLE t1; SET debug_sync='flush_tables_with_read_lock_after_acquire_locks SIGNAL parked2 WAIT_FOR go2'; --send FLUSH TABLES t1 WITH READ LOCK; --connection node_2 SET debug_sync='now WAIT_FOR parked2'; # let the flush table wait in pause state before we unlock # table otherwise there is window where-in flush table is # yet to wait in pause and unlock allows alter table to proceed. # this is because send is asynchronous. --let $wait_condition = SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.PROCESSLIST WHERE Info LIKE 'FLUSH TABLES t1 WITH READ LOCK'; --let $wait_condition_on_error_output = SHOW PROCESSLIST --source include/wait_condition_with_debug.inc SET debug_sync='now SIGNAL go2'; # this will release existing lock but will not resume # the cluster as there is new FTRL that is still pausing it. UNLOCK TABLES; SHOW CREATE TABLE t1; --connection node_2a --reap set debug_sync= 'RESET'; UNLOCK TABLES; SET SESSION wsrep_sync_wait = DEFAULT; SHOW CREATE TABLE t1; SELECT * from t1; --connection node_1 DROP TABLE t1;