polardbxengine/mysql-test/suite/rpl/t/rpl_reset_slave_all.test

81 lines
3.0 KiB
Plaintext

--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_slave_transaction_retries = @@GLOBAL.slave_transaction_retries;
SET @saved_innodb_lock_wait_timeout = @@GLOBAL.innodb_lock_wait_timeout;
SET GLOBAL slave_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 slave 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 slave_transaction_retries = @saved_slave_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 MASTER TO MASTER_LOG_FILE = "$binlog_file", MASTER_LOG_POS = $binlog_position,
MASTER_USER='root', MASTER_HOST='127.0.0.1', MASTER_PORT=$MASTER_MYPORT;
--source include/start_slave.inc
--source include/rpl_connection_master.inc
DROP TABLE t1;
--source include/rpl_end.inc