From: Nuno Carvalho Date: March 6 2012 10:53pm Subject: bzr push into mysql-trunk branch (nuno.carvalho:3722 to 3723) Bug#13680651 List-Archive: http://lists.mysql.com/commits/143134 X-Bug: 13680651 Message-Id: <201203062254.q26Ms0Wu023128@acsmt356.oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit 3723 Nuno Carvalho 2012-03-06 BUG#13680651 - RPL_CORRUPTION TEST FAILS WITH SLAVE STOPPED WITH WRONG ERROR CODE ON VALGRIND rpl.rpl_corruption test fails with slave stopped with wrong error code: 1721 (expected 1595,1722) on rhel5-x86-64bit-valgrind on daily trunk. Changed error code to the correct one, 1721 SQLSTATE: HY000 (ER_NETWORK_READ_EVENT_CHECKSUM_FAILURE). When checksum validation is disabled on master, like on testcase #4, master can send corrupted events to slave that will throw ER_NETWORK_READ_EVENT_CHECKSUM_FAILURE error. modified: mysql-test/suite/rpl/r/rpl_corruption.result mysql-test/suite/rpl/t/rpl_corruption.test 3722 Manish Kumar 2012-03-05 BUG#13553750 - 61096: REPLICATION FROM MASTER WITH NEW CHECKSUM ALGORITHM Problem - In the event that the master is extended with a new checksum algorithm not known to the slave, the slave will deduce that there is no checksum support in the master. However, the master will send events with the new checksum while the slave treats it as no checksum, with potential for treating the checksum as part of the event body. Fix - Added a new variable BINLOG_CHECKSUM_ALG_UNKNOWN to denote the checksum algorithm used by master, which is unknown to the slave. Changed the code that checks the result of the SET @master_binlog_checksum = @@global.binlog_checksum on the slave. Set mi->checksum_alg_before_fd to BINLOG_CHECKSUM_ALG_OFF if an error is reported while executing the query. Incase there is no error and the checksum algorithm is unknown function find_type returns 0 and the value of mi->checksum_alg_before_fd == -1. In such a case we stop the slave with an error message. @ mysql-test/suite/rpl/r/rpl_checksum_undef.result The result file for the added test. @ mysql-test/suite/rpl/t/rpl_checksum_undef.test A test for the new functionality. @ sql/rpl_slave.cc Changed the code for the undefined algorithm on the slave with fault injection. added: mysql-test/suite/rpl/r/rpl_checksum_undef.result mysql-test/suite/rpl/t/rpl_checksum_undef.test modified: sql/rpl_slave.cc === modified file 'mysql-test/suite/rpl/r/rpl_corruption.result' --- a/mysql-test/suite/rpl/r/rpl_corruption.result 2012-02-06 11:55:44 +0000 +++ b/mysql-test/suite/rpl/r/rpl_corruption.result 2012-03-06 22:52:58 +0000 @@ -26,7 +26,7 @@ include/wait_for_slave_io_error.inc [err SET GLOBAL master_verify_checksum=0; SET GLOBAL debug="d,corrupt_read_log_event"; START SLAVE IO_THREAD; -include/wait_for_slave_io_error.inc [errno=1595,1722] +include/wait_for_slave_io_error.inc [errno=1595,1721] SET GLOBAL debug=""; SET GLOBAL master_verify_checksum=1; # 5. Slave. Corruption in network === modified file 'mysql-test/suite/rpl/t/rpl_corruption.test' --- a/mysql-test/suite/rpl/t/rpl_corruption.test 2012-02-06 11:55:44 +0000 +++ b/mysql-test/suite/rpl/t/rpl_corruption.test 2012-03-06 22:52:58 +0000 @@ -91,7 +91,7 @@ SET GLOBAL master_verify_checksum=0; SET GLOBAL debug="d,corrupt_read_log_event"; --connection slave START SLAVE IO_THREAD; -let $slave_io_errno= 1595,1722; +let $slave_io_errno= 1595,1721; --source include/wait_for_slave_io_error.inc --connection master SET GLOBAL debug=""; No bundle (reason: useless for push emails).