From: Andrei Elkin Date: December 20 2010 3:59pm Subject: bzr push into mysql-next-mr-wl5569 branch (andrei.elkin:3251) WL#5569 List-Archive: http://lists.mysql.com/commits/127326 Message-Id: <201012201559.oBKFxnFD018223@mysql1000.dsl.inet.fi> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============2043110053==" --===============2043110053== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline 3251 Andrei Elkin 2010-12-20 [merge] wl#5569 MTS manual merging from the repo and correcting GAQ processing with introducing a volatile byte to indicate whether an item is busy or released. added: mysql-test/suite/sys_vars/r/mts_checkpoint_group_basic.result mysql-test/suite/sys_vars/t/mts_checkpoint_group_basic.test modified: mysql-test/extra/rpl_tests/rpl_parallel_load.test mysql-test/r/mysqld--help-notwin.result mysql-test/r/mysqld--help-win.result mysql-test/suite/funcs_1/r/is_columns_mysql.result mysql-test/suite/rpl/r/rpl_parallel_conf_limits.result mysql-test/suite/rpl/t/disabled.def mysql-test/suite/sys_vars/r/all_vars.result scripts/mysql_system_tables.sql sql/log_event.cc sql/mysqld.cc sql/mysqld.h sql/rpl_info_factory.cc sql/rpl_info_factory.h sql/rpl_rli.cc sql/rpl_rli.h sql/rpl_rli_pdb.cc sql/rpl_rli_pdb.h sql/rpl_slave.cc sql/rpl_slave.h sql/sys_vars.cc === modified file 'mysql-test/extra/rpl_tests/rpl_parallel_load.test' --- a/mysql-test/extra/rpl_tests/rpl_parallel_load.test 2010-12-17 12:46:15 +0000 +++ b/mysql-test/extra/rpl_tests/rpl_parallel_load.test 2010-12-20 15:58:58 +0000 @@ -6,7 +6,7 @@ # load volume parameter # -let $iter = 1000; +let $iter = 500; # windows run on PB2 is too slow to time out disable_query_log; === modified file 'sql/log_event.cc' --- a/sql/log_event.cc 2010-12-18 00:33:02 +0000 +++ b/sql/log_event.cc 2010-12-20 15:58:58 +0000 @@ -2429,9 +2429,12 @@ Slave_worker *Log_event::get_slave_worke g.checkpoint_log_name= NULL; g.checkpoint_log_pos= 0; g.checkpoint_seqno= (uint) -1; + g.done= 0; // the last occupied GAQ's array index gaq_idx= rli->gaq->assigned_group_index= rli->gaq->en_queue((void *) &g); + // serves as a mark for Coord to delete events otherwise + const_cast(rli)->curr_group_is_parallel= TRUE; DBUG_ASSERT(gaq_idx != (ulong) -1 && gaq_idx < rli->gaq->s); DBUG_ASSERT(((Slave_job_group *) @@ -2450,14 +2453,14 @@ Slave_worker *Log_event::get_slave_worke // mark the current grup as started with B-event const_cast(rli)->curr_group_seen_begin= TRUE; + return NULL; } else { DBUG_ASSERT(!rli->curr_group_seen_begin); + + // Parallel single event proceeds to partiting etc ... } - // serves as a mark for Coord to delete events otherwise - const_cast(rli)->curr_group_is_parallel= TRUE; - return NULL; } //else // g @@ -2765,32 +2768,6 @@ int Log_event::apply_event(Relay_log_inf // This `only-sequential' case relates to a DDL Query case DBUG_ASSERT(rli->curr_group_da.elements == 0); -#if 0 - if (rli->curr_group_da.elements > 0) - { - int res; - Log_event *ev_begin= * (Log_event**) pop_dynamic(&c_rli->curr_group_da); - - DBUG_ASSERT(rli->curr_group_da.elements == 0); - DBUG_ASSERT(rli->curr_group_seen_begin); - - // While Query-log-event is not supported GAQ needs rollback - if (rli->curr_group_seen_begin) - { - Slave_job_group g; - ulong ind= rli->gaq->de_tail((uchar *) &g); - const_cast(rli)->mts_total_groups--; - - DBUG_ASSERT(rli->last_assigned_worker == NULL); - DBUG_ASSERT(c_rli->gaq->assigned_group_index == ind); - } - res= ev_begin->do_apply_event(rli); - delete ev_begin; - c_rli->curr_group_is_parallel= FALSE; // Coord will destruct events - if (res) - DBUG_RETURN(res); - } -#endif DBUG_ASSERT(!rli->curr_group_seen_begin); c_rli->curr_group_is_parallel= FALSE; // Coord will destruct events === modified file 'sql/rpl_rli_pdb.cc' --- a/sql/rpl_rli_pdb.cc 2010-12-18 00:33:02 +0000 +++ b/sql/rpl_rli_pdb.cc 2010-12-20 15:58:58 +0000 @@ -526,6 +526,7 @@ void Slave_worker::slave_worker_ends_gro // first ever group must have relay log name DBUG_ASSERT(last_group_done_index != c_rli->gaq->s || ptr_g->group_relay_log_name != NULL); + DBUG_ASSERT(ptr_g->worker_id == id); if (ptr_g->group_relay_log_name != NULL) { @@ -544,8 +545,9 @@ void Slave_worker::slave_worker_ends_gro ptr_g->group_master_log_pos= group_master_log_pos; ptr_g->group_relay_log_pos= group_relay_log_pos; + ptr_g->done= 1; // GAQ index is available to C now - last_group_done_index = gaq_idx; // GAQ index is available to C now + last_group_done_index= gaq_idx; } // cleanup relating to the last executed group regardless of error @@ -618,6 +620,7 @@ ulong circular_buffer_queue::de_queue(uc DBUG_ASSERT(e == s || (len == (a >= e)? (a - e) : (s + a - e))); + DBUG_ASSERT(a != e); return ret; } @@ -644,6 +647,7 @@ ulong circular_buffer_queue::de_tail(uch DBUG_ASSERT(e == s || (len == (a >= e)? (a - e) : (s + a - e))); + DBUG_ASSERT(a != e); return a; } @@ -675,9 +679,12 @@ ulong circular_buffer_queue::en_queue(vo // post-boundary cond if (a == e) a= s; + DBUG_ASSERT(a == e || len == (a >= e) ? (a - e) : (s + a - e)); + DBUG_ASSERT(a != e); + return ret; } @@ -703,12 +710,13 @@ void* circular_buffer_queue::head_queue( range, incl cases the queue is empty or full. @return TRUE if the first arg identifies a queue entity ordered - before one defined by the 2nd arg, + after one defined by the 2nd arg, FALSE otherwise. */ bool circular_buffer_queue::gt(ulong i, ulong k) { DBUG_ASSERT(i < s && k < s); + DBUG_ASSERT(a != e); if (i >= e) if (k >= e) @@ -759,8 +767,12 @@ ulong Slave_committed_queue::move_queue_ if (ptr_g->worker_id == (ulong) -1) break; /* the head is not even assigned */ get_dynamic(ws, (uchar *) &w_i, ptr_g->worker_id); - - if (w_i->last_group_done_index == s || gt(i, w_i->last_group_done_index)) + + // no stale last_group_done_index value + // DBUG_ASSERT(w_i->checkpoint_notified); + + //if (in(w_i->last_group_done_index) && gt(i, w_i->last_group_done_index)) + if (!ptr_g->done) break; /* gap at i'th */ // memorize the last met group_relay_log_name === modified file 'sql/rpl_rli_pdb.h' --- a/sql/rpl_rli_pdb.h 2010-12-18 00:33:02 +0000 +++ b/sql/rpl_rli_pdb.h 2010-12-20 15:58:58 +0000 @@ -98,6 +98,9 @@ public: */ void* head_queue(); bool gt(ulong i, ulong k); // comparision of ordering of two entities + /* index is within the valid range */ + bool in(ulong k) { return !empty() && + (e > a ? (k >= e || k < a) : (k >= e && k < a)); } bool empty() { return e == s; } bool full() { return a == s; } }; @@ -127,6 +130,7 @@ typedef struct st_slave_job_group uint checkpoint_seqno; my_off_t checkpoint_log_pos; // T-event lop_pos filled by W for CheckPoint char* checkpoint_log_name; + volatile uchar done; // Flag raised by W, read and reset by C } Slave_job_group; #define get_job(from, to) \ --===============2043110053== 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: b05710100429b19137d55726ba5f4ea9d6c89386 # timestamp: 2010-12-20 17:59:49 +0200 # base_revision_id: alfranio.correia@stripped\ # 49pdpnaksfjd69l0 # # Begin bundle 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 --===============2043110053==--