From: Andrei Elkin Date: February 16 2012 9:25pm Subject: bzr push into mysql-trunk-wl3584 branch (andrei.elkin:3636 to 3637) Bug#13727933 List-Archive: http://lists.mysql.com/commits/142938 X-Bug: 13727933 Message-Id: <201202162125.q1GLPcfI031278@mysql1000.dsl.inet.fi> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit 3637 Andrei Elkin 2012-02-16 Bug#13727933 - PURGE BINARY LOGS TO MIGHT BE INEFFECTIVE AND NOT VERBOSE ABOUT THAT This is a workaround patch as PURGE can't be used so RESET MASTER is attempted as a tool to remove binlog files and thereby to desynchronize master and slave wrt GTID data. I had to change the test in three more parts: two are the local slave side INSERT and DROP as parts of the workaround, and yet another --source include/have_binlog_format_mixed_or_statement.inc due to a new being reported Bug 13729084. @ mysql-test/suite/rpl/r/rpl_gtid_lost_fail_to_connect.result results updated. @ mysql-test/suite/rpl/t/rpl_gtid_lost_fail_to_connect.test PURGE can't be used so RESET MASTER is attempted as a tool to remove binlog files and thereby to desynchronize master and slave wrt GTID data. modified: mysql-test/suite/rpl/r/rpl_gtid_lost_fail_to_connect.result mysql-test/suite/rpl/t/rpl_gtid_lost_fail_to_connect.test 3636 Luis Soares 2012-02-16 WL#3584 Renaming back the collection. renamed: mysql-test/collections/mysql-trunk-wl3584-release-builds.push => mysql-test/collections/mysql-trunk-wl3584-gtid-ON.push === modified file 'mysql-test/suite/rpl/r/rpl_gtid_lost_fail_to_connect.result' --- a/mysql-test/suite/rpl/r/rpl_gtid_lost_fail_to_connect.result 2012-02-01 14:51:39 +0000 +++ b/mysql-test/suite/rpl/r/rpl_gtid_lost_fail_to_connect.result 2012-02-16 21:25:06 +0000 @@ -9,17 +9,18 @@ include/gtid_utils.inc CREATE TABLE t1 (a INT) ENGINE = InnoDB; include/stop_slave.inc INSERT INTO t1 VALUES (1); -FLUSH LOGS; +RESET MASTER; +INSERT INTO t1 VALUES (2); INSERT INTO t1 VALUES (2); -PURGE BINARY LOGS TO 'master-bin.000002'; CHANGE MASTER TO MASTER_AUTO_POSITION = 1; START SLAVE; include/wait_for_slave_io_error.inc [errno=1236 # ER_MASTER_FATAL_ERROR_READING_BINLOG] include/stop_slave_sql.inc -CHANGE MASTER TO MASTER_LOG_FILE = 'master-bin.000002', MASTER_LOG_POS = MASTER_POS, MASTER_AUTO_POSITION = 0; +CHANGE MASTER TO MASTER_LOG_FILE = 'master-bin.000001', MASTER_LOG_POS = MASTER_POS, MASTER_AUTO_POSITION = 0; include/start_slave.inc include/assert.inc [t1 should contain only one row with the value 2] ######## Clean up ######## DROP TABLE t1; +DROP TABLE t1; include/gtid_utils_end.inc include/rpl_end.inc === modified file 'mysql-test/suite/rpl/t/rpl_gtid_lost_fail_to_connect.test' --- a/mysql-test/suite/rpl/t/rpl_gtid_lost_fail_to_connect.test 2012-02-01 14:51:39 +0000 +++ b/mysql-test/suite/rpl/t/rpl_gtid_lost_fail_to_connect.test 2012-02-16 21:25:06 +0000 @@ -18,8 +18,14 @@ --source include/have_debug.inc --source include/have_gtid.inc - --source include/master-slave.inc + +# Bug 13729084 +# Row format makes +# the replicated `INSERT INTO t1 VALUES (2)' to be applied +# whereas it should not be that way so the assert fires. +--source include/have_binlog_format_mixed_or_statement.inc + call mtr.add_suppression("Got fatal error 1236 from master when reading data from binary log: 'The slave is connecting using CHANGE MASTER TO MASTER_AUTO_POSITION = 1, but the master has purged binary logs containing GTIDs that the slave requires."); --source include/gtid_utils.inc @@ -32,15 +38,27 @@ CREATE TABLE t1 (a INT) ENGINE = InnoDB; --connection master INSERT INTO t1 VALUES (1); -FLUSH LOGS; + +#FLUSH LOGS; +#--let $master_file= query_get_value(SHOW MASTER STATUS, File, 1) +#--let $master_pos= query_get_value(SHOW MASTER STATUS, Position, 1) +#INSERT INTO t1 VALUES (2); +#eval PURGE BINARY LOGS TO '$master_file'; +# Bug 13727933 prevents using PURGE +# Todo: restore PURGE and remove the following workaround + +RESET MASTER; --let $master_file= query_get_value(SHOW MASTER STATUS, File, 1) --let $master_pos= query_get_value(SHOW MASTER STATUS, Position, 1) INSERT INTO t1 VALUES (2); --save_master_pos -eval PURGE BINARY LOGS TO '$master_file'; --connection slave + +INSERT INTO t1 VALUES (2); # Todo: remove as a part of Bug 13727933 workaround + CHANGE MASTER TO MASTER_AUTO_POSITION = 1; + START SLAVE; --let $slave_io_errno= 1236 # ER_MASTER_FATAL_ERROR_READING_BINLOG --source include/wait_for_slave_io_error.inc @@ -52,6 +70,7 @@ eval CHANGE MASTER TO MASTER_LOG_FILE = --source include/start_slave.inc --sync_with_master + --let $assert_text= t1 should contain only one row with the value 2 --let $assert_cond= "[SELECT COUNT(*) FROM t1]" = "1" AND "[SELECT * FROM t1]" = "2" --source include/assert.inc @@ -59,5 +78,9 @@ eval CHANGE MASTER TO MASTER_LOG_FILE = --echo ######## Clean up ######## --connection master DROP TABLE t1; + +--connection slave +DROP TABLE t1; #Todo: remove as a part of Bug 13727933 workaround + --source include/gtid_utils_end.inc --source include/rpl_end.inc No bundle (reason: useless for push emails).