File: rpl_applier_blocked_by_backup.test

package info (click to toggle)
mysql-8.0 8.0.43-3
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 1,273,924 kB
  • sloc: cpp: 4,684,605; ansic: 412,450; pascal: 108,398; java: 83,641; perl: 30,221; cs: 27,067; sql: 26,594; sh: 24,181; python: 21,816; yacc: 17,169; php: 11,522; xml: 7,388; javascript: 7,076; makefile: 2,194; lex: 1,075; awk: 670; asm: 520; objc: 183; ruby: 97; lisp: 86
file content (87 lines) | stat: -rw-r--r-- 2,409 bytes parent folder | download
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
# === Purpose ===
# Check PURGE BINARY LOGS operation is mutually exclusive with BACKUP lock.
#
# === Requirements ===
# R1. PURGE BINARY LOGS must be mutually exclusive with BACKUP operation.
#
# === Implementation ===
# 1. Lock replica for backup
# 2. Flush binary logs so relay log is tried to be pureged
# 3. Check that relay logs have not been purged
# 4. Unblock backup on replica
# 5. Generate log purge from source onto replica
# 6. Check relay logs have been purged on replica
#
# === References ===
# Bug#35342521	Binary log purge should hold IX backup lock
#
--source include/have_debug.inc
--source include/have_debug_sync.inc
--source include/have_binlog_format_row.inc
--source include/master-slave.inc

--echo #
--echo # Lock replica for backup
--echo #

--source include/rpl_connection_slave.inc
--let $MYSQLD_SLAVE_DATADIR = `select @@datadir`
--source include/save_error_log_position.inc
LOCK INSTANCE FOR BACKUP;

--echo #
--echo # Flush binary logs so relay log is tried to be purged
--echo #

--source include/rpl_connection_master.inc
FLUSH BINARY LOGS;

--echo #
--echo # Check that relay logs have not been purged on replica
--echo #

--source include/sync_slave_sql_with_master.inc

--replace_regex /[\\]/\//
--cat_file $MYSQLD_SLAVE_DATADIR/slave-relay-bin.index

let $error_pattern =
Could not purge binary logs since another session is executing LOCK INSTANCE FOR BACKUP. Wait for that session to release the lock.
Could not purge binary logs since another session is executing LOCK INSTANCE FOR BACKUP. Wait for that session to release the lock.;
--source include/assert_error_log.inc

--echo #
--echo # Unblock backup on replica
--echo #

--source include/save_error_log_position.inc
UNLOCK INSTANCE;

--echo #
--echo # Generate log purge from source onto replica
--echo #

--source include/rpl_connection_master.inc
FLUSH BINARY LOGS;

--echo #
--echo # Check relay logs have been purged on replica
--echo #

--source include/sync_slave_sql_with_master.inc

--replace_regex /[\\]/\//
--cat_file $MYSQLD_SLAVE_DATADIR/slave-relay-bin.index

--let $error_pattern = NONE
--source include/assert_error_log.inc

call mtr.add_suppression("Could not purge binary logs since another session is executing LOCK INSTANCE FOR BACKUP. Wait for that session to release the lock.");

--echo #
--echo # Cleanup
--echo #

--source include/rpl_connection_master.inc
--source include/rpl_end.inc