--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