From: Andrei Elkin Date: June 21 2011 4:11pm Subject: bzr push into mysql-next-mr-wl5569 branch (andrei.elkin:3312 to 3314) WL#5569 List-Archive: http://lists.mysql.com/commits/139591 Message-Id: <201106211611.p5LGBR7D004976@mysql1000.dsl.inet.fi> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0047353231==" --===============0047353231== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline 3314 Andrei Elkin 2011-06-21 [merge] wl#5569 MTS Fixing valgrind warnings. @ sql/log_event.cc w->running_status is verfied to find out the actually sought running status of a Worker. THD can be unavainlable that's what a valgrind report was about. @ sql/rpl_rli_pdb.cc commenting out an assert that valgrind does not like. @ sql/rpl_rli_pdb.h new method is added to be invoked at MTS shutdown. @ sql/rpl_slave.cc Invoking gaq cleanup at the end of MTS session. modified: sql/log_event.cc sql/rpl_rli_pdb.cc sql/rpl_rli_pdb.h sql/rpl_slave.cc 3313 Andrei Elkin 2011-06-21 wl#5569 MTS rpl_parallel_start_stop.test could fail sporadicaly with timeout. @ mysql-test/include/wait_for_slave_param.inc Correcting comments and handling of passed by caller $slave_timeout to make sure the unit of 1 second really holds. Introduced symbolic default_timeout, sleep_freq(uency) to procude time to sleep in between of two polls. @ mysql-test/suite/rpl/t/rpl_parallel_start_stop.test Since the default time to wait is less than one for innodb's wait for lock, the time to wait for error is set explicitly. modified: mysql-test/include/wait_for_slave_param.inc mysql-test/suite/rpl/t/rpl_parallel_start_stop.test 3312 Alfranio Correia 2011-06-20 [merge] merge mysql-next-mr-wl5569 (local) --> mysql-next-mr-wl5569 modified: mysql-test/extra/rpl_tests/rpl_conflicts.test mysql-test/extra/rpl_tests/rpl_extra_col_slave.test mysql-test/extra/rpl_tests/rpl_loaddata.test mysql-test/extra/rpl_tests/rpl_parallel_load.test mysql-test/extra/rpl_tests/rpl_relayrotate.test mysql-test/extra/rpl_tests/rpl_row_empty_imgs.test mysql-test/extra/rpl_tests/rpl_row_tabledefs.test mysql-test/extra/rpl_tests/rpl_stm_EE_err2.test mysql-test/suite/rpl/r/rpl_circular_for_4_hosts.result mysql-test/suite/rpl/r/rpl_extra_col_slave_innodb.result mysql-test/suite/rpl/r/rpl_extra_col_slave_myisam.result mysql-test/suite/rpl/r/rpl_heartbeat_basic.result mysql-test/suite/rpl/r/rpl_loaddata.result mysql-test/suite/rpl/r/rpl_loaddata_fatal.result mysql-test/suite/rpl/r/rpl_parallel.result mysql-test/suite/rpl/r/rpl_parallel_start_stop.result mysql-test/suite/rpl/r/rpl_row_colSize.result mysql-test/suite/rpl/r/rpl_row_conflicts.result mysql-test/suite/rpl/r/rpl_row_img_eng_full.result mysql-test/suite/rpl/r/rpl_row_img_sanity.result mysql-test/suite/rpl/r/rpl_row_inexist_tbl.result mysql-test/suite/rpl/r/rpl_row_tabledefs_2myisam.result mysql-test/suite/rpl/r/rpl_row_tabledefs_3innodb.result mysql-test/suite/rpl/r/rpl_sequential.result mysql-test/suite/rpl/r/rpl_show_errors.result mysql-test/suite/rpl/r/rpl_slave_load_remove_tmpfile.result mysql-test/suite/rpl/r/rpl_slave_start.result mysql-test/suite/rpl/r/rpl_stm_000001.result mysql-test/suite/rpl/r/rpl_stm_EE_err2.result mysql-test/suite/rpl/r/rpl_stm_conflicts.result mysql-test/suite/rpl/r/rpl_stm_loaddata_concurrent.result mysql-test/suite/rpl/t/rpl_circular_for_4_hosts.test mysql-test/suite/rpl/t/rpl_heartbeat_basic.test mysql-test/suite/rpl/t/rpl_loaddata_fatal.test mysql-test/suite/rpl/t/rpl_parallel.test mysql-test/suite/rpl/t/rpl_parallel_multi_db-master.opt mysql-test/suite/rpl/t/rpl_parallel_multi_db-slave.opt mysql-test/suite/rpl/t/rpl_parallel_start_stop.test mysql-test/suite/rpl/t/rpl_row_colSize.test mysql-test/suite/rpl/t/rpl_row_img_sanity.test mysql-test/suite/rpl/t/rpl_row_inexist_tbl.test mysql-test/suite/rpl/t/rpl_show_errors.test mysql-test/suite/rpl/t/rpl_slave_load_remove_tmpfile.test mysql-test/suite/rpl/t/rpl_slave_start.test mysql-test/suite/rpl/t/rpl_stm_000001.test sql/rpl_reporting.h sql/rpl_slave.cc === modified file 'mysql-test/include/wait_for_slave_param.inc' --- a/mysql-test/include/wait_for_slave_param.inc 2010-12-20 14:57:35 +0000 +++ b/mysql-test/include/wait_for_slave_param.inc 2011-06-21 15:15:43 +0000 @@ -29,8 +29,8 @@ # --let $slave_param_comparison= != # # $slave_timeout -# The default timeout is 5 minutes. You can change the timeout by -# setting $slave_timeout. The unit is seconds. +# The default timeout is $default_timeout seconds. You can change the timeout by +# setting $slave_timeout. The unit is one second. # # $slave_error_param # If set, this script will check if the column of the output from @@ -45,11 +45,14 @@ --let $include_filename= wait_for_slave_param.inc [$slave_param] --source include/begin_include_file.inc +--let $default_timeout= 30 +--let $sleep_freq= 10 +--let $sleep_time= `select 1.0 / $sleep_freq` let $_slave_timeout= $slave_timeout; if (!$_slave_timeout) { - let $_slave_timeout= 300; + let $_slave_timeout= `select $default_timeout * $sleep_freq`; } if ($slave_error_param == '') @@ -110,7 +113,7 @@ while ($_slave_continue) --source include/show_rpl_debug_info.inc --die Timeout in include/wait_for_slave_param.inc } - --sleep 0.1 + --sleep $sleep_time } } === modified file 'mysql-test/suite/rpl/t/rpl_parallel_start_stop.test' --- a/mysql-test/suite/rpl/t/rpl_parallel_start_stop.test 2011-06-20 13:26:35 +0000 +++ b/mysql-test/suite/rpl/t/rpl_parallel_start_stop.test 2011-06-21 15:15:43 +0000 @@ -169,6 +169,9 @@ update t1 set a=21 where a=2; # slave is stopped +# setting timeout to be as twice as greater than innodb's. +--let $slave_timeout=`select 2*@@global.innodb_lock_wait_timeout` + let $slave_sql_errno= 1213, 1205; source include/wait_for_slave_sql_error.inc; === 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 16:10:54 +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(); i= (i + 1) % s) + { + 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 --===============0047353231== 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: b5a3251adfecbbed3aabbc2fbefa70c424372511 # timestamp: 2011-06-21 19:11:27 +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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 AEwl3FKJizBd68XiRjFw/4u5IpwoSDiDPluA --===============0047353231==--