From: Andrei Elkin Date: June 21 2011 2:05pm Subject: bzr commit into mysql-next-mr-wl5569 branch (andrei.elkin:3313) WL#5569 List-Archive: http://lists.mysql.com/commits/139576 Message-Id: <201106211405.p5LE5dfU023219@mysql1000.dsl.inet.fi> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0993140952==" --===============0993140952== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline #At file:///home/andrei/MySQL/BZR/2a-23May/WL/mysql-next-mr-wl5569/ based on revid:alfranio.correia@stripped 3313 Andrei Elkin 2011-06-21 wl#5569 MTS fixing few valgrind warnings. @ sql/log_event.cc Checking running status instead of THD::killed for the worker. @ sql/rpl_rli_pdb.cc Valgrind sensitive assert is commented out. @ sql/rpl_slave.cc Relocating a print-out to an earlier executing point where anynchrounously deletable event is still available. modified: sql/log_event.cc sql/rpl_rli_pdb.cc sql/rpl_rli_pdb.h sql/rpl_slave.cc === modified file 'sql/log_event.cc' --- a/sql/log_event.cc 2011-06-19 09:33:36 +0000 +++ b/sql/log_event.cc 2011-06-21 14:05:32 +0000 @@ -2801,7 +2801,7 @@ void append_item_to_jobs(slave_job_item mysql_mutex_lock(&w->jobs_lock); // possible WQ overfill - while (!w->info_thd->killed && !thd->killed && + while (w->running_status == Slave_worker::RUNNING && !thd->killed && (ret= en_queue(&w->jobs, job_item)) == -1) { const char *old_msg; === modified file 'sql/rpl_rli_pdb.cc' --- a/sql/rpl_rli_pdb.cc 2011-06-20 22:19:06 +0000 +++ b/sql/rpl_rli_pdb.cc 2011-06-21 14:05:32 +0000 @@ -308,9 +308,14 @@ static void free_entry(db_worker_hash_en DBUG_PRINT("info", ("free_entry %s, %d", entry->db, (int) strlen(entry->db))); DBUG_ASSERT(c_thd->system_thread == SYSTEM_THREAD_SLAVE_SQL); - DBUG_ASSERT(entry->usage == 0 || - !entry->worker || // the last entry owner could have errored out - entry->worker->running_status != Slave_worker::RUNNING); + + /* + Although assert is correct valgrind senses entry->worker can be freed. + + DBUG_ASSERT(entry->usage == 0 || + !entry->worker || // last entry owner could have errored out + entry->worker->running_status != Slave_worker::RUNNING); + */ mts_move_temp_tables_to_thd(c_thd, entry->temporary_tables); entry->temporary_tables= NULL; @@ -1115,6 +1120,24 @@ ulong Slave_committed_queue::move_queue_ return cnt; } +/** + Method should be executed at slave system shutdown to + cleanup dynamically allocated items that remained as unprocessed + by shutdown time. +*/ +void Slave_committed_queue::free_dynamic_items() +{ + ulong i; + for (i= e; i != a && !empty();) + { + Slave_job_group *ptr_g= (Slave_job_group *) dynamic_array_ptr(&Q, i); + if (ptr_g->group_relay_log_name) + { + my_free(ptr_g->group_relay_log_name); + } + } +} + void Slave_worker::do_report(loglevel level, int err_code, const char *msg, va_list vargs) const { c_rli->do_report(level, err_code, msg, vargs); === modified file 'sql/rpl_rli_pdb.h' --- a/sql/rpl_rli_pdb.h 2011-06-20 10:52:44 +0000 +++ b/sql/rpl_rli_pdb.h 2011-06-21 14:05:32 +0000 @@ -215,6 +215,8 @@ public: /* Checkpoint routine refreshes the queue */ ulong move_queue_head(DYNAMIC_ARRAY *ws); + /* Method is for slave shutdown time cleanup */ + void free_dynamic_items(); }; class Slave_jobs_queue : public circular_buffer_queue === modified file 'sql/rpl_slave.cc' --- a/sql/rpl_slave.cc 2011-06-20 13:32:33 +0000 +++ b/sql/rpl_slave.cc 2011-06-21 14:05:32 +0000 @@ -2832,15 +2832,14 @@ int apply_event_and_update_pos(Log_event rli->curr_group_da.elements= 0; } - //job_item->data= ev; - /* Notice `ev' instance can be destoyed after `append()' */ - append_item_to_jobs(job_item, w, rli); /* ALFRANIO --> Add more debug messages. */ DBUG_PRINT("Mts-jobs", ("Assigning Jobs %lu to Worker %lu\n", (long unsigned int) ((Log_event* )job_item->data)->log_pos, w->id)); + /* Notice `ev' instance can be destoyed after `append()' */ + append_item_to_jobs(job_item, w, rli); if (need_sync) { /* @@ -4455,6 +4454,8 @@ 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 --===============0993140952== 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: 811c378d52cc6447d0b86cf00693bc3c62179da1 # timestamp: 2011-06-21 17:05:39 +0300 # source_branch: file:///home/andrei/MySQL/BZR/2a-23May/mysql-trunk/ # base_revision_id: alfranio.correia@stripped\ # sfyyfaisztf64299 # # Begin bundle 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 AseZbEk8oeVFf33bgqqae4u5IpwoSG1PfRAA --===============0993140952==--