summaryrefslogtreecommitdiffstats
path: root/mysql-test/suite/galera/t/MW-86-wait8.test
blob: 1b3f355eb2557433f9f0057be73b73c820bb6256 (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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
#
# SHOW commands now obey wsrep_sync_wait = 8 (WSREP_SYNC_WAIT_BEFORE_SHOW)
#
--source include/galera_cluster.inc
--source include/have_binlog_format_row.inc
--source include/have_debug.inc
--source include/have_debug_sync.inc
--source include/galera_have_debug_sync.inc

SET @orig_debug=@@debug_dbug;

--connection node_2
# Make sure no signals have been leftover from previous tests to surprise us.
SELECT @@debug_sync;

SET SESSION wsrep_sync_wait = 8;
SET GLOBAL debug_dbug = "+d,sync.wsrep_apply_cb";

--connection node_1
CREATE TABLE t_wait8 (f1 INTEGER) ENGINE=InnoDB;
# This will complete in node_1 but will start a background apply in node_2
# which will stop because of sync.wsrep_apply_cb we set above.
INSERT INTO t_wait8 VALUES (1);

--connection node_2

--let $wsrep_provider_options_orig = `SELECT @@wsrep_provider_options`
SET GLOBAL wsrep_provider_options = "repl.causal_read_timeout=PT0.1S";

SET SESSION debug_sync = "now WAIT_FOR sync.wsrep_apply_cb_reached";

--disable_result_log

--error ER_LOCK_WAIT_TIMEOUT
SHOW BINARY LOGS;

--error ER_LOCK_WAIT_TIMEOUT
SHOW BINLOG EVENTS;

--error ER_LOCK_WAIT_TIMEOUT
SHOW COLUMNS FROM t1;

--error ER_LOCK_WAIT_TIMEOUT
SHOW CREATE DATABASE db1;

--error ER_LOCK_WAIT_TIMEOUT
SHOW CREATE EVENT e1;

--error ER_LOCK_WAIT_TIMEOUT
SHOW CREATE FUNCTION f1;

--error ER_LOCK_WAIT_TIMEOUT
SHOW CREATE PROCEDURE p1;

--error ER_LOCK_WAIT_TIMEOUT
SHOW CREATE TABLE t1;

--error ER_LOCK_WAIT_TIMEOUT
SHOW CREATE TRIGGER tr1;

--error ER_LOCK_WAIT_TIMEOUT
SHOW CREATE VIEW v1;

--error ER_LOCK_WAIT_TIMEOUT
SHOW DATABASES;

--error 0
SHOW ENGINE InnoDB STATUS;

--error ER_LOCK_WAIT_TIMEOUT
SHOW FUNCTION CODE f1;

--error ER_LOCK_WAIT_TIMEOUT
SHOW FUNCTION STATUS;

--error ER_LOCK_WAIT_TIMEOUT
SHOW GRANTS FOR 'root'@'localhost';

--error ER_LOCK_WAIT_TIMEOUT
SHOW INDEX FROM t1;

--error ER_LOCK_WAIT_TIMEOUT
SHOW OPEN TABLES;

--error ER_LOCK_WAIT_TIMEOUT
SHOW PROCEDURE CODE p1;

--error ER_LOCK_WAIT_TIMEOUT
SHOW PROCEDURE STATUS;

--error 0
SHOW PRIVILEGES;

--error ER_LOCK_WAIT_TIMEOUT
SHOW STATUS LIKE 'wsrep_cluster_size';

--error ER_LOCK_WAIT_TIMEOUT
SHOW TABLE STATUS;

--error ER_LOCK_WAIT_TIMEOUT
SHOW TABLES;

--error ER_LOCK_WAIT_TIMEOUT
SHOW TRIGGERS;

--error ER_LOCK_WAIT_TIMEOUT
SHOW GLOBAL VARIABLES LIKE 'foo_bar';

--error 0
SHOW WARNINGS;

--enable_result_log

--disable_query_log
--eval SET GLOBAL wsrep_provider_options = "$wsrep_provider_options_orig"
--enable_query_log

# Unblock the background INSERT and remove the sync point.
SET GLOBAL debug_dbug = @orig_debug;

SET DEBUG_SYNC = "now SIGNAL signal.wsrep_apply_cb";
SET debug_sync='RESET';

SET SESSION wsrep_sync_wait = default;

# This will wait for the background INSERT to complete before we quit
# from the test.
DROP TABLE t_wait8;

# Make sure no pending signals are leftover to surprise subsequent tests.
SELECT @@debug_sync;