From: Nuno Carvalho Date: August 21 2012 10:33am Subject: bzr push into mysql-5.6 branch (nuno.carvalho:4136 to 4137) Bug#14116526 List-Archive: http://lists.mysql.com/commits/144588 X-Bug: 14116526 Message-Id: <20120821103306.31806.50605.4137@localhost> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit 4137 Nuno Carvalho 2012-08-21 BUG#14116526: RPL.RPL_GTID_SQL_UNTIL_BEFORE_AFTER FAILS WITH RESULT LENGTH MISMATCH ON TRUNK. rpl_gtid_sql_until_before_after has sporadic failures on pb2 on valgrind runs. On slow/overloaded platforms SQL_THREAD_WAIT_AFTER_GTIDS may timeout before reaching the condition, which query result is not being logged due to nondeterministic return value. To avoid SQL_THREAD_WAIT_AFTER_GTIDS returns before reaching the condition, disabled timeout from SQL_THREAD_WAIT_AFTER_GTIDS query. modified: mysql-test/suite/rpl/r/rpl_gtid_sql_until_before_after.result mysql-test/suite/rpl/t/rpl_gtid_sql_until_before_after.test 4136 Manish Kumar 2012-08-21 BUG#14381701 - DELETING FROM A HASH WHILE ITERATING OVER IT IS WRONG Problem - The problem is that in sql/rpl_rli_pdb.cc file we delete from a hash while iterating over it. This is wrong since delete operation might rearrange elements in hash, so "iterator" will become invalid and, unless extra steps are taken, such iteration is likely to miss elements which should have been deleted otherwise. Fix - The problem is fixed by storing the address of the Hash elements that needs to be deleted based on the usage, in the Dynamic array of pointers in a for loop. In a second iteration we pop the elements of the dynamic array and delete the Hash element from that address. This will not cause any inconsistency. @ sql/rpl_rli_pdb.cc Added the new Dynamic array " hash_element " which is used to store the hash entries that need to be deleted. modified: sql/rpl_rli_pdb.cc === modified file 'mysql-test/suite/rpl/r/rpl_gtid_sql_until_before_after.result' --- a/mysql-test/suite/rpl/r/rpl_gtid_sql_until_before_after.result 2012-05-08 17:11:38 +0000 +++ b/mysql-test/suite/rpl/r/rpl_gtid_sql_until_before_after.result 2012-08-21 10:27:20 +0000 @@ -111,7 +111,7 @@ c1 9 Sync slave with master include/start_slave.inc -SELECT SQL_THREAD_WAIT_AFTER_GTIDS('MASTER_UUID:10', 300); +SELECT SQL_THREAD_WAIT_AFTER_GTIDS('MASTER_UUID:10'); SELECT * FROM t1; c1 2 === modified file 'mysql-test/suite/rpl/t/rpl_gtid_sql_until_before_after.test' --- a/mysql-test/suite/rpl/t/rpl_gtid_sql_until_before_after.test 2012-05-08 17:11:38 +0000 +++ b/mysql-test/suite/rpl/t/rpl_gtid_sql_until_before_after.test 2012-08-21 10:27:20 +0000 @@ -139,7 +139,7 @@ SELECT * FROM t1; --replace_result $master_uuid MASTER_UUID --enable_query_log --disable_result_log ---eval SELECT SQL_THREAD_WAIT_AFTER_GTIDS('$master_uuid:10', 300) +--eval SELECT SQL_THREAD_WAIT_AFTER_GTIDS('$master_uuid:10') --enable_result_log SELECT * FROM t1; No bundle (reason: useless for push emails).