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
|
--source include/not_group_replication_plugin.inc
--source include/have_binlog_format_row.inc
--source include/master-slave.inc
###############################################################################
# BUG#21107331 RESET SLAVE ALL DOESN'T RESETS SLAVE_RETRIED_TRANSACTIONS
# BUG#21111229 RESET SLAVE ALL BEHAVES DIFFERENT FOR DEFAULT AND
# NON-DEFAULT CHANNELS
#
# Verify that count_transactions_retries is reset to 0 after RESET SLAVE ALL
# Step 1. Generates an innodb row lock timeout to increase
# count_transactions_retries
# Step 2. RESET SLAVE
# Step 3. check count_transactions_retries is 0
###############################################################################
CREATE TABLE t1 (c1 INT KEY) ENGINE=InnoDB;
# It is used by the CHANGE MASTER below
--source include/save_binlog_position.inc
--source include/sync_slave_sql_with_master.inc
--source include/stop_slave.inc
SET @saved_replica_transaction_retries = @@GLOBAL.replica_transaction_retries;
SET @saved_innodb_lock_wait_timeout = @@GLOBAL.innodb_lock_wait_timeout;
SET GLOBAL replica_transaction_retries = 1;
SET GLOBAL innodb_lock_wait_timeout = 1;
--source include/start_slave.inc
# It blocks slave applier which applies INSERT INTO t1 VALUES(1);
BEGIN;
INSERT INTO t1 VALUES(1);
--source include/rpl_connection_master.inc
INSERT INTO t1 VALUES(1);
# Slave sql stops after retrying the transaction 1 times.
--source include/rpl_connection_slave1.inc
--let $slave_sql_errno=1205
--source include/wait_for_slave_sql_error.inc
--source include/stop_slave_io.inc
# The warnings are generated by MTS
CALL mtr.add_suppression(".*worker thread retried transaction 1 time.*");
CALL mtr.add_suppression(".*The replica coordinator and worker threads are "
"stopped, possibly leaving data in inconsistent.*");
--let $assert_text= count_transactions_retries should be greater than 0
--let $assert_status_name= count_transactions_retries
--let $assert_status_value= 0
--let $assert_comparator= >=
--let $table=replication_applier_status
--source include/rpl_pfs_assert_status.inc
RESET SLAVE ALL;
--let $assert_text= count_transactions_retries should be 0
--let $assert_status_name= count_transactions_retries
--let $assert_status_value= 0
--let $table= replication_applier_status
--source include/rpl_pfs_assert_status.inc
--source include/rpl_connection_slave.inc
# rollback the INSERT which is used to block slave applier.
ROLLBACK;
--echo #
--echo # Cleanup
--echo #
SET GLOBAL replica_transaction_retries = @saved_replica_transaction_retries;
SET GLOBAL innodb_lock_wait_timeout = @saved_innodb_lock_wait_timeout;
--replace_result $binlog_file BINLOG_FILE $binlog_position BINLOG_POS $MASTER_MYPORT MASTER_PORT
eval CHANGE REPLICATION SOURCE TO SOURCE_LOG_FILE = "$binlog_file", SOURCE_LOG_POS = $binlog_position,
SOURCE_USER='root', SOURCE_HOST='127.0.0.1', SOURCE_PORT=$MASTER_MYPORT;
--source include/start_slave.inc
--source include/rpl_connection_master.inc
DROP TABLE t1;
--source include/rpl_end.inc
|