Current Path : /home/usr.opt/mysql57/mysql-test/suite/rpl/t/ |
FreeBSD hs32.drive.ne.jp 9.1-RELEASE FreeBSD 9.1-RELEASE #1: Wed Jan 14 12:18:08 JST 2015 root@hs32.drive.ne.jp:/sys/amd64/compile/hs32 amd64 |
Current File : //home/usr.opt/mysql57/mysql-test/suite/rpl/t/rpl_rotate_row_trans.test |
# ==== Purpose ==== # # Verify if the slave SQL thread is avoiding to update position when a Rotate # event is applied in the middle of a group. # # This test will execute two INSERT statements in the master and will use # a debug sync point in the slave to rotate the relay log (restarting the IO # thread) after each Write_rows event be queued into the relay log. # # The slave SQL thread should not update its position while in the middle of # the transaction. # # After the last stop of the IO thread, the SQL thread will also be stopped. # # Both threads will be started to finish the test. # # A problematic SQL thread will restart in the middle of the transaction and # will skip the first INSERT statement. # # ==== Related Bugs and Worklogs ==== # # Bug #18482854 RPL : ROTATE_LOG_EVENT INCORRECTLY ADVANCES GROUP_RELAY_LOG_POS # IN A GROUP # --source include/have_binlog_format_row.inc --source include/have_innodb.inc --source include/not_gtid_enabled.inc --source include/master-slave.inc # Test should run only on debug build source include/have_debug.inc; source include/have_debug_sync.inc; --disable_query_log call mtr.add_suppression("The slave coordinator and worker threads are stopped, possibly leaving data in inconsistent state"); --enable_query_log --echo # Initial setup --source include/rpl_connection_master.inc CREATE TABLE t1 (c1 INT) ENGINE=InnoDB; --echo # Sync slave with master and setup debug sync point --source include/sync_slave_sql_with_master.inc SET @save_debug=@@global.debug; SET GLOBAL DEBUG='d,stop_io_after_reading_write_rows_log_event'; --echo # Insert the data in the master --source include/rpl_connection_master.inc --let iterations= 2 --let $inserts= 0 BEGIN; while ($inserts < $iterations) { --eval INSERT INTO t1 (c1) VALUES ($inserts) --inc $inserts } COMMIT; --echo # Restart the IO thread keeping SQL thread running until last relay log split --source include/rpl_connection_slave.inc --let $restarts= $iterations while ($restarts) { --source include/wait_for_slave_io_to_stop.inc --dec $restarts if ($restarts) { START SLAVE IO_THREAD; } } --echo # Stop the SQL thread (it should be in the middle of the transaction/group) --let $slave_sql_errno= convert_error(ER_MTS_INCONSISTENT_DATA) --source include/stop_slave_sql.inc --echo # Remove the debug point and restart the both threads SET GLOBAL DEBUG= @save_debug; --source include/start_slave.inc --echo # Do one more insert on master and then sync slave with master --source include/rpl_connection_master.inc --eval INSERT INTO t1 (c1) VALUES ($inserts) --source include/sync_slave_sql_with_master.inc --echo # Now compare master and slave's t1 table data --source include/rpl_connection_master.inc --let diff_tables= master:t1, slave:t1 --source include/diff_tables.inc --echo # Cleanup --source include/rpl_connection_master.inc DROP TABLE t1; --source include/rpl_end.inc