From: Andrei Elkin Date: January 11 2011 10:54pm Subject: bzr commit into mysql-next-mr-wl5569 branch (andrei.elkin:3268) WL#5569 List-Archive: http://lists.mysql.com/commits/128468 Message-Id: <201101112254.p0BMsK0E017367@mysql1000.dsl.inet.fi> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0150859680==" --===============0150859680== 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 3268 Andrei Elkin 2011-01-12 wl#5569 MTS fixing the worker threads start/stop. @ sql/rpl_rli.h adding RLI::opt_slave_parallel_workers to cache the server's namesake global var. @ sql/rpl_slave.cc moving rli->recovery_parallel_workers resetting down to the exit point from starting routine. modified: sql/rpl_rli.h sql/rpl_slave.cc === modified file 'sql/rpl_rli.h' --- a/sql/rpl_rli.h 2010-12-27 18:54:41 +0000 +++ b/sql/rpl_rli.h 2011-01-11 22:54:12 +0000 @@ -460,7 +460,8 @@ public: ulonglong mts_total_groups; // total event groups distributed in current session bool curr_group_is_parallel; // a mark for Coord to indicate on T-event of the curr group at delete - ulong slave_parallel_workers; // one slave session time number of workers + 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 === modified file 'sql/rpl_slave.cc' --- a/sql/rpl_slave.cc 2010-12-27 18:54:41 +0000 +++ b/sql/rpl_slave.cc 2011-01-11 22:54:12 +0000 @@ -4341,7 +4341,7 @@ int slave_start_workers(Relay_log_info * rli->mts_slave_worker_queue_len_max= ::opt_mts_slave_worker_queue_len_max; rli->gaq= new Slave_committed_queue(rli->get_group_master_log_name(), sizeof(Slave_job_group), - 1 + rli->slave_parallel_workers * + 1 + rli->opt_slave_parallel_workers * rli->mts_slave_worker_queue_len_max, n); rli->mts_pending_jobs_size= 0; rli->mts_pending_jobs_size_max= ::opt_mts_pending_jobs_size_max; @@ -4359,11 +4359,6 @@ int slave_start_workers(Relay_log_info * rli->curr_event_is_not_in_group= FALSE; //rli->worker_bitmap_buf= my_malloc(n/8 + 1,MYF(MY_WME)); - // end recovery right now if mts_recovery_groups() did not find any gaps - if (rli->mts_recovery_group_cnt == 0) - rli->recovery_parallel_workers= rli->slave_parallel_workers; - - for (i= 0; i < n; i++) { if ((error= slave_start_single_worker(rli, i))) @@ -4378,6 +4373,11 @@ int slave_start_workers(Relay_log_info * } err: + rli->slave_parallel_workers= rli->workers.elements; + // end recovery right now if mts_recovery_groups() did not find any gaps + if (rli->mts_recovery_group_cnt == 0) + rli->recovery_parallel_workers= rli->slave_parallel_workers; + return error; } @@ -4452,6 +4452,7 @@ void slave_stop_workers(Relay_log_info * delete_dynamic(&rli->curr_group_assigned_parts); // GCAP //my_free(rli->worker_bitmap_buf); rli->deinit_workers(); + rli->slave_parallel_workers= 0; } /** @@ -4498,7 +4499,7 @@ pthread_handler_t handle_slave_sql(void pthread_detach_this_thread(); /* mts-II: starting the worker pool */ - if (slave_start_workers(rli, rli->slave_parallel_workers) != 0) + if (slave_start_workers(rli, rli->opt_slave_parallel_workers) != 0) goto err; if (init_slave_thread(thd, SLAVE_THD_SQL)) @@ -6558,7 +6559,7 @@ int start_slave(THD* thd , Master_info* To cache the system var value and used it in the following. The system var can change but not the cached. */ - mi->rli->slave_parallel_workers= opt_mts_slave_parallel_workers; + mi->rli->opt_slave_parallel_workers= opt_mts_slave_parallel_workers; mysql_mutex_lock(&mi->rli->data_lock); @@ -6612,9 +6613,9 @@ int start_slave(THD* thd , Master_info* push_warning(thd, MYSQL_ERROR::WARN_LEVEL_NOTE, ER_MISSING_SKIP_SLAVE, ER(ER_MISSING_SKIP_SLAVE)); - if (mi->rli->slave_parallel_workers != 0) + if (mi->rli->opt_slave_parallel_workers != 0) { - mi->rli->slave_parallel_workers= 0; + mi->rli->opt_slave_parallel_workers= 0; push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_NOTE, ER_NO_FEATURE_ON_PARALLEL_SLAVE, ER(ER_NO_FEATURE_ON_PARALLEL_SLAVE), @@ -6626,7 +6627,7 @@ int start_slave(THD* thd , Master_info* mysql_mutex_unlock(&mi->rli->data_lock); /* MTS technical limitation no support of trans retry */ - if (mi->rli->slave_parallel_workers != 0 && slave_trans_retries != 0) + if (mi->rli->opt_slave_parallel_workers != 0 && slave_trans_retries != 0) { push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_NOTE, ER_NO_FEATURE_ON_PARALLEL_SLAVE, --===============0150859680== 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: 2a6c940e238e2cafde77323ce5578e42da6489be # timestamp: 2011-01-12 00:54:20 +0200 # base_revision_id: alfranio.correia@stripped\ # 1752cvodjvag6ukh # # Begin bundle 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 GQFlVYqKz/4u5IpwoSD9T0o6 --===============0150859680==--