From: Andrei Elkin Date: June 24 2011 3:57pm Subject: bzr push into mysql-next-mr-wl5569 branch (andrei.elkin:3320 to 3321) WL#5569 List-Archive: http://lists.mysql.com/commits/139834 Message-Id: <201106241557.p5OFvCHi030665@mysql1000.dsl.inet.fi> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============1978071529==" --===============1978071529== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline 3321 Andrei Elkin 2011-06-24 wl#5569 MTS This patch makes a bit of cleanup, addresses one memory-allocation todo and completes fixing valgrind report (rpl_parallel_start_stop) due to strings allocation in Slave_job_group items. modified: sql/log_event.cc sql/rpl_rli.h sql/rpl_rli_pdb.cc sql/rpl_rli_pdb.h sql/rpl_slave.cc 3320 Andrei Elkin 2011-06-24 wl#5569 MTS this patch completes the previous one to fixes a result file and make the innodb specific test verification to base on tables not views. modified: mysql-test/extra/rpl_tests/rpl_parallel_load_innodb.test mysql-test/suite/rpl/r/rpl_sequential.result === modified file 'sql/log_event.cc' --- a/sql/log_event.cc 2011-06-22 17:54:23 +0000 +++ b/sql/log_event.cc 2011-06-24 12:38:19 +0000 @@ -2475,7 +2475,7 @@ Slave_worker *Log_event::get_slave_worke { int i= 0; num_dbs= mts_number_dbs(); - List_iterator it(*mts_get_dbs(thd->mem_root)); + List_iterator it(*mts_get_dbs(&rli->mts_coor_mem_root)); it++; ret_worker= rli->last_assigned_worker; @@ -2526,14 +2526,6 @@ Slave_worker *Log_event::get_slave_worke } DBUG_ASSERT(i == num_dbs || num_dbs == OVER_MAX_DBS_IN_EVENT_MTS); - - // TODO: convert to C's private mem_root to reset not per event but rather realrely. - - // Releasing the Coord's mem-root from the updated dbs. It's safe to do at this - // point because the root is no longer needed along remained part of Coordinator's - // execution flow. - - free_root(thd->mem_root, MYF(MY_KEEP_PREALLOC)); } else { @@ -2609,8 +2601,14 @@ Slave_worker *Log_event::get_slave_worke DBUG_ASSERT(ret_worker != NULL); - // TODO: UNTIL option, throw an error when relay-log reading - // starts from inside of a group!! + /* + The following two blocks are executed if the worker has not been + notified about new relay-log or a new checkpoints. + Relay-log string is freed by Coordinator, Worker deallocates + strings in the checkpoint block. + However if the worker exits earlier reclaiming for both happens anyway at + GAQ delete. + */ if (!ret_worker->relay_log_change_notified) // ALFRANIO { @@ -2633,13 +2631,6 @@ Slave_worker *Log_event::get_slave_worke ret_worker->relay_log_change_notified= TRUE; } - /* - This executed if the worker has not been notified by a recent - set of checkpoints. - Notice that it is the worker responsibility to deallocate the - memory allocated at this point. This is done upon committing - this job. - */ if (!ret_worker->checkpoint_notified) { ptr_g->checkpoint_log_name= (char *) @@ -2661,6 +2652,9 @@ Slave_worker *Log_event::get_slave_worke ptr_g->checkpoint_seqno= rli->checkpoint_seqno; ptr_g->ts= when + (time_t) exec_time; rli->checkpoint_seqno++; + + // reclaiming resources allocated during the group scheduling + free_root(&rli->mts_coor_mem_root, MYF(MY_KEEP_PREALLOC)); } return ret_worker; === modified file 'sql/rpl_rli.h' --- a/sql/rpl_rli.h 2011-06-22 17:54:23 +0000 +++ b/sql/rpl_rli.h 2011-06-24 12:38:19 +0000 @@ -460,6 +460,7 @@ public: ulong opt_slave_parallel_workers; // auxiliary cache for ::opt_slave_parallel_workers ulong slave_parallel_workers; // the one slave session time number of workers ulong recovery_parallel_workers; // number of workers while recovering. + /* A sorted array of Worker current assignements number to provide approximate view on Workers loading. @@ -473,6 +474,7 @@ public: ulong mts_recovery_group_cnt; // number of groups to execute at recovery ulong mts_recovery_index; // running index of recoverable groups bool mts_recovery_group_seen_begin; + /* temporary tables are held by Coordinator though are created and dropped explicilty by Workers. The following lock has to be taken by either party @@ -480,16 +482,27 @@ public: find, drop, create, open. */ mysql_mutex_t mts_temp_tables_lock; + /* - While Worker utilize its thd->mem_root, Coordinator adopts a specific mem-root: + Coordinator's specific mem-root to hold various temporary data while + the current group is being schedulled. The root is shunk to default size + at the end of the group distribution. */ MEM_ROOT mts_coor_mem_root; + /* - While distibuting events basing on their properties MTS Coordinator - changes its mts group status. - Transition from NOT_IN to IN happens once an event is scheduled to a Worker. - Reverse transition occures when Coordinator requests synchronization with - Workers demanding them to complete their assignments. + While distibuting events basing on their properties MTS + Coordinator changes its mts group status. + Transition normally flowws to follow `=>' arrows on the diagram: + + +----------------------------+ + V | + MTS_NOT_IN_GROUP => | + {MTS_IN_GROUP => MTS_END_GROUP --+} while (!killed) => MTS_KILLED_GROUP + + though MTS_END_GROUP has `->' link to MTS_NOT_IN_GROUP + when Coordinator synchronizes with Workers by demanding them to complete their + assignments. */ enum { === modified file 'sql/rpl_rli_pdb.cc' --- a/sql/rpl_rli_pdb.cc 2011-06-21 16:10:54 +0000 +++ b/sql/rpl_rli_pdb.cc 2011-06-24 12:38:19 +0000 @@ -1135,6 +1135,14 @@ void Slave_committed_queue::free_dynamic { my_free(ptr_g->group_relay_log_name); } + if (ptr_g->checkpoint_log_name) + { + my_free(ptr_g->checkpoint_log_name); + } + if (ptr_g->checkpoint_relay_log_name) + { + my_free(ptr_g->checkpoint_relay_log_name); + } } } === modified file 'sql/rpl_rli_pdb.h' --- a/sql/rpl_rli_pdb.h 2011-06-21 14:05:32 +0000 +++ b/sql/rpl_rli_pdb.h 2011-06-24 12:38:19 +0000 @@ -210,6 +210,7 @@ public: { delete_dynamic(&last_done); my_free(lwm.group_relay_log_name); + free_dynamic_items(); // free possibly left allocated strings in GAQ list } } === modified file 'sql/rpl_slave.cc' --- a/sql/rpl_slave.cc 2011-06-22 18:17:43 +0000 +++ b/sql/rpl_slave.cc 2011-06-24 12:38:19 +0000 @@ -4490,8 +4490,6 @@ void slave_stop_workers(Relay_log_info * rli->mts_group_status= Relay_log_info::MTS_NOT_IN_GROUP; destroy_hash_workers(rli); - // free possibly allocated strings in GAQ's list - rli->gaq->free_dynamic_items(); delete rli->gaq; delete_dynamic(&rli->least_occupied_workers); // least occupied delete_dynamic(&rli->curr_group_da); // GCDA --===============1978071529== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/andrei.elkin@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: andrei.elkin@stripped # target_branch: file:///home/andrei/MySQL/BZR/2a-23May/WL/mysql-next-\ # mr-wl5569/ # testament_sha1: 43ed48adf026bf6414a4544a95155679c5a48d61 # timestamp: 2011-06-24 18:57:12 +0300 # source_branch: file:///home/andrei/MySQL/BZR/2a-23May/mysql-trunk/ # base_revision_id: andrei.elkin@stripped\ # 4ywfitmakbxpp3z7 # # Begin bundle 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 ckU4UJADSoeQ --===============1978071529==--