From: Libing Song Date: December 13 2012 3:06pm Subject: bzr push into mysql-5.6 branch (libing.song:4775 to 4776) Bug#15980626 List-Archive: http://lists.mysql.com/commits/145514 X-Bug: 15980626 Message-Id: <20121213150649.19510.69325.4776@mylaptop> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit 4776 Libing Song 2012-12-13 Bug#15980626 POSSIBLE REPLICATION PERFORMANCE DEGRADATION THROUGH RLI->FLUSH_INFO(TRUE) Problem:sync_relay_log_info was being ignored when transactional tables were updated. No matter what number was set, relay log info file was synced upon committing. This was causing the performance degradation. Fix: Sync(or update relay log info table) after each transaction should happen only when both data and relay log info are stored in transactional tables. Only this scenario will guarantee crash safety. modified: sql/log_event.cc 4775 Dmitry Lenev 2012-12-13 Follow-up for the fix for bug #15954872 "MAKE MDL SUBSYSTEM AND TABLE DEFINITION CACHE ROBUST AGAINST BUGS IN CALLERS". Make mdl-t unit test pass on Solaris and Windows by adjusting patterns used in EXPECT_DEATH macros to take into account different messages about assertion failures on these platforms. modified: unittest/gunit/mdl-t.cc === modified file 'sql/log_event.cc' --- a/sql/log_event.cc revid:dmitry.lenev@stripped +++ b/sql/log_event.cc revid:libing.song@stripped @@ -7209,7 +7209,8 @@ int Xid_log_event::do_apply_event_worker ulong gaq_idx= mts_group_idx; Slave_job_group *ptr_group= coordinator_gaq->get_job_group(gaq_idx); - if ((error= w->commit_positions(this, ptr_group, true))) + if ((error= w->commit_positions(this, ptr_group, + w->c_rli->is_transactional()))) goto err; DBUG_PRINT("mts", ("do_apply group master %s %llu group relay %s %llu event %s %llu.", @@ -7266,7 +7267,7 @@ int Xid_log_event::do_apply_event(Relay_ if (log_pos) // 3.23 binlogs don't have log_posx rli_ptr->set_group_master_log_pos(log_pos); - if ((error= rli_ptr->flush_info(TRUE))) + if ((error= rli_ptr->flush_info(rli_ptr->is_transactional()))) goto err; DBUG_PRINT("info", ("do_apply group master %s %llu group relay %s %llu event %s %llu\n", No bundle (reason: useless for push emails).