summaryrefslogtreecommitdiff
path: root/mysql-test/suite/galera/t/lp1376747-4.test
blob: d19ff422ab071f72e75e077c569c92e536620f95 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#
# Test Flush tables with read lock along with
# flush tables <table> 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;
set debug_sync= 'RESET';

--connection node_2a
--reap
UNLOCK TABLES;

SET SESSION wsrep_sync_wait = DEFAULT;
SHOW CREATE TABLE t1;
SELECT * from t1;

--connection node_1
DROP TABLE t1;