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
|
# === Purpose ===
# Check FLUSH BINARY LOGS operation is mutually exclusive with BACKUP lock.
#
# === Requirements ===
# R1. FLUSH BINARY LOGS must be mutually exclusive with BACKUP operation.
#
# === Implementation ===
# 1. Initialize
# 2. Execute FLUSH BINARY LOGS but stop on 'at_purge_logs_before_date' sync point
# 3. Check errors for LOCK INSTANCE FOR BACKUP operation
# 4. Continue FLUSH BINARY LOGS operation
# 5. Check no errors for LOCK INSTANCE FOR BACKUP operation
#
# === References ===
#
# Bug#35342521 Binary log purge should hold IX backup lock
#
--source include/have_debug_sync.inc
--source include/have_binlog_format_row.inc
--echo #
--echo # Initialization
--echo #
RESET MASTER;
CREATE TABLE t1 (c INT);
--let $binlog_file = query_get_value(SHOW MASTER STATUS, File, 1)
FLUSH BINARY LOGS;
--replace_column 2 SIZE
SHOW BINARY LOGS;
--connect (con1, localhost, root,,)
--echo #
--echo # Execute FLUSH BINARY LOGS but stop on 'at_purge_logs_before_date' sync point
--echo #
--let $rpl_connection_name = default
--source include/rpl_connection.inc
--let $statement_connection = con1
--let $statement = FLUSH BINARY LOGS
--let $sync_point = at_purge_logs_before_date
--source include/execute_to_sync_point.inc
--echo #
--echo # Check errors for LOCK INSTANCE FOR BACKUP operation
--echo #
SET SESSION lock_wait_timeout = 1;
--error ER_LOCK_WAIT_TIMEOUT
LOCK INSTANCE FOR BACKUP;
--echo #
--echo # Continue FLUSH BINARY LOGS operation
--echo #
# Resume FLUSH LOGS
--source include/execute_from_sync_point.inc
--echo #
--echo # Check no errors for LOCK INSTANCE FOR BACKUP operation
--echo #
LOCK INSTANCE FOR BACKUP;
UNLOCK INSTANCE;
--echo #
--echo # Cleanup
--echo #
--let $rpl_connection_name = default
--source include/rpl_connection.inc
DROP TABLE t1;
|