From: Andrei Elkin Date: June 20 2011 1:32pm Subject: bzr commit into mysql-next-mr-wl5569 branch (andrei.elkin:3312) WL#5569 WL#5599 List-Archive: http://lists.mysql.com/commits/139524 Message-Id: <201106201332.p5KDWhHL015825@mysql1000.dsl.inet.fi> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============1801330316==" --===============1801330316== 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:andrei.elkin@stripped 3312 Andrei Elkin 2011-06-20 [merge] wl#5569 MTS wl#5599 MTS recovery fixing valgrind warnings. modified: sql/rpl_rli_pdb.h sql/rpl_slave.cc === modified file 'sql/rpl_rli_pdb.h' --- a/sql/rpl_rli_pdb.h 2011-06-18 18:58:21 +0000 +++ b/sql/rpl_rli_pdb.h 2011-06-20 10:52:44 +0000 @@ -119,9 +119,7 @@ public: typedef struct st_slave_job_group { char *group_master_log_name; // (actually redundant) - my_off_t master_log_pos; // B-event log_pos my_off_t group_master_log_pos; // T-event lop_pos filled by W for CheckPoint - my_off_t group_relay_log_pos; // filled by W /* When RL name changes C allocates and fill in a new name of RL, @@ -133,10 +131,13 @@ typedef struct st_slave_job_group Freeing unless NULL is left to C at CheckPoint. */ char *group_relay_log_name; // The value is last seen relay-log + my_off_t group_relay_log_pos; // filled by W + ulong worker_id; Slave_worker *worker; ulonglong total_seqno; + my_off_t master_log_pos; // B-event log_pos /* checkpoint coord are reset by CP and rotate:s */ uint checkpoint_seqno; my_off_t checkpoint_log_pos; // T-event lop_pos filled by W for CheckPoint === modified file 'sql/rpl_slave.cc' --- a/sql/rpl_slave.cc 2011-06-20 13:26:35 +0000 +++ b/sql/rpl_slave.cc 2011-06-20 13:32:33 +0000 @@ -192,6 +192,8 @@ static int terminate_slave_thread(THD *t bool skip_lock); static bool check_io_slave_killed(THD *thd, Master_info *mi, const char *info); int slave_worker_exec_job(Slave_worker * w, Relay_log_info *rli); +static int mts_event_coord_cmp(LOG_POS_COORD *id1, LOG_POS_COORD *id2); +static int mts_event_job_cmp(Slave_job_group *id1, Slave_job_group *id2); /* Find out which replications threads are running @@ -3841,16 +3843,23 @@ int mts_event_coord_cmp(LOG_POS_COORD *i (poscmp < 0 ? -1 : (poscmp > 0 ? 1 : 0)))); } +int mts_event_job_cmp(Slave_job_group *id1, Slave_job_group *id2) +{ + longlong filecmp= strcmp(id1->checkpoint_log_name, id2->checkpoint_log_name); + longlong poscmp= id1->checkpoint_log_pos - id2->checkpoint_log_pos; + return (filecmp < 0 ? -1 : (filecmp > 0 ? 1 : + (poscmp < 0 ? -1 : (poscmp > 0 ? 1 : 0)))); +} + bool mts_recovery_groups(Relay_log_info *rli, MY_BITMAP *groups) { - Log_event *ev= NULL; // , *desc= NULL; + Log_event *ev= NULL; const char *log_name= NULL; const char *errmsg= NULL; bool error= FALSE; - DYNAMIC_ARRAY above_lwm_jobs; bool curr_group_seen_begin= FALSE; + DYNAMIC_ARRAY above_lwm_jobs; Slave_job_group job_worker; - Slave_job_group job_file; IO_CACHE log; File file; @@ -3875,14 +3884,19 @@ bool mts_recovery_groups(Relay_log_info Slave_worker *worker= Rpl_info_factory::create_worker(opt_worker_repository_id, id, rli); worker->init_info(); - retrieve_job(worker, job_file); LOG_POS_COORD w_last= {worker->group_master_log_name, worker->group_master_log_pos}; if (mts_event_coord_cmp(&w_last, &cp) > 0) { /* Inserts information into a dynamic array for further processing. + The jobs/workers are ordered by the last checkpoint positions + workers have seen. */ - insert_dynamic(&above_lwm_jobs, (uchar*) &job_file); + job_worker.worker= worker; + job_worker.checkpoint_log_pos= worker->checkpoint_master_log_pos; + job_worker.checkpoint_log_name= worker->checkpoint_master_log_name; + + insert_dynamic(&above_lwm_jobs, (uchar*) &job_worker); } else { @@ -3893,9 +3907,13 @@ bool mts_recovery_groups(Relay_log_info worker->end_info(); delete worker; } - }; + } - sort_dynamic(&above_lwm_jobs, (qsort_cmp) mts_event_coord_cmp); + /* + This sorts the array by the last checkpoint positions workers have seen + and is required in the next recovery phase to compute shift bits. + */ + sort_dynamic(&above_lwm_jobs, (qsort_cmp) mts_event_job_cmp); /* In what follows, the group Recovery Bitmap is constructed. @@ -4397,7 +4415,7 @@ void slave_stop_workers(Relay_log_info * for (i= rli->workers.elements - 1; i >= 0; i--) { - Slave_worker *w; + Slave_worker *w= NULL; get_dynamic((DYNAMIC_ARRAY*)&rli->workers, (uchar*) &w, i); mysql_mutex_lock(&w->jobs_lock); --===============1801330316== 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: db3556485a626e6a2be867f80b12d0956a038954 # timestamp: 2011-06-20 16:32:43 +0300 # source_branch: file:///home/andrei/MySQL/BZR/2a-23May/mysql-trunk/ # base_revision_id: andrei.elkin@stripped\ # otq4ndic0p8b5lmz # # Begin bundle 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 --===============1801330316==--