From: Andrei Elkin Date: December 22 2010 6:35pm Subject: bzr push into mysql-next-mr-wl5569 branch (andrei.elkin:3259) WL#5569 List-Archive: http://lists.mysql.com/commits/127527 Message-Id: <201012221835.oBMIZFtQ020643@mysql1000.dsl.inet.fi> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0302302058==" --===============0302302058== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline 3259 Andrei Elkin 2010-12-22 [merge] wl#5569 MTS merging from the repo. added: mysql-test/include/not_mts_slave_parallel_workers.inc mysql-test/suite/rpl/r/rpl_mixed_parallel_crash_safe.result mysql-test/suite/rpl/r/rpl_row_parallel_crash_safe.result mysql-test/suite/rpl/r/rpl_stm_parallel_crash_safe.result mysql-test/suite/rpl/t/rpl_mixed_parallel_crash_safe-slave.opt mysql-test/suite/rpl/t/rpl_mixed_parallel_crash_safe.test mysql-test/suite/rpl/t/rpl_row_parallel_crash_safe-slave.opt mysql-test/suite/rpl/t/rpl_row_parallel_crash_safe.test mysql-test/suite/rpl/t/rpl_stm_parallel_crash_safe-slave.opt mysql-test/suite/rpl/t/rpl_stm_parallel_crash_safe.test modified: mysql-test/extra/rpl_tests/rpl_crash_safe.inc mysql-test/suite/rpl/t/rpl_migration_crash_safe.test mysql-test/suite/rpl/t/rpl_mixed_crash_safe.test mysql-test/suite/rpl/t/rpl_row_crash_safe.test mysql-test/suite/rpl/t/rpl_stm_crash_safe.test sql/rpl_rli_pdb.cc sql/rpl_slave.cc === modified file 'sql/log_event.cc' --- a/sql/log_event.cc 2010-12-22 11:57:18 +0000 +++ b/sql/log_event.cc 2010-12-22 18:31:13 +0000 @@ -2772,18 +2772,26 @@ int Log_event::apply_event(Relay_log_inf only_sequential_exec(rli->run_query_in_parallel, rli->curr_group_seen_begin /* todo: obs 2nd arg */)) // rli->curr_group_seen_begin && ends_group() => rli->last_assigned_worker - && !rli->curr_group_seen_begin)) + && (!rli->curr_group_seen_begin || parallel_exec_by_coordinator(::server_id)))) { if (parallel) { // This `only-sequential' case relates to a DDL Query case - - DBUG_ASSERT(rli->curr_group_da.elements == 0); - DBUG_ASSERT(!rli->curr_group_seen_begin); + // or a group split apart by FD event + DBUG_ASSERT(seq_event && + (rli->curr_group_da.elements == 0 || rli->curr_group_seen_begin)); - c_rli->curr_group_is_parallel= FALSE; // Coord will destruct events if (!parallel_exec_by_coordinator(::server_id)) + { + DBUG_ASSERT(!rli->curr_group_seen_begin); + + c_rli->curr_group_is_parallel= FALSE; // Coord will destruct events (void) wait_for_workers_to_finish(rli); + } + else + { + c_rli->curr_event_is_not_in_group= TRUE; + } } else if (rli->is_mts_recovery()) { === modified file 'sql/log_event.h' --- a/sql/log_event.h 2010-12-21 19:31:29 +0000 +++ b/sql/log_event.h 2010-12-22 18:31:13 +0000 @@ -1246,8 +1246,9 @@ public: bool parallel_exec_by_coordinator(ulong slave_server_id) { return - get_type_code() == FORMAT_DESCRIPTION_EVENT && - (server_id == (uint32) ::server_id); + (get_type_code() == FORMAT_DESCRIPTION_EVENT || + get_type_code() == ROTATE_EVENT) && + ((server_id == (uint32) ::server_id) || (log_pos == 0)); } /** === modified file 'sql/rpl_rli.h' --- a/sql/rpl_rli.h 2010-12-22 11:57:18 +0000 +++ b/sql/rpl_rli.h 2010-12-22 18:31:13 +0000 @@ -474,6 +474,7 @@ public: MY_BITMAP recovery_groups; // bitmap used during recovery. ulong mts_recovery_group_cnt; // number of groups to execute at recovery ulong mts_recovery_index; // running index of recoverable groups + bool curr_event_is_not_in_group; // a special case of group split apart by FD /* most of allocation in the coordinator rli is there */ void init_workers(ulong); === modified file 'sql/rpl_slave.cc' --- a/sql/rpl_slave.cc 2010-12-22 12:30:09 +0000 +++ b/sql/rpl_slave.cc 2010-12-22 18:34:26 +0000 @@ -2848,10 +2848,11 @@ int apply_event_and_update_pos(Log_event int error= 0; if (skip_event || (!rli->is_parallel_exec() || - !rli->curr_group_is_parallel)) + (!rli->curr_group_is_parallel || rli->curr_event_is_not_in_group))) { DBUG_ASSERT(skip_event || !rli->is_parallel_exec() || - !rli->curr_group_is_parallel || + (!rli->curr_group_is_parallel || + rli->curr_event_is_not_in_group) || (ev->only_sequential_exec(rli->run_query_in_parallel, (rli->curr_group_seen_begin || rli->last_assigned_worker != NULL)) @@ -3055,7 +3056,7 @@ static int exec_relay_log_event(THD* thd // if (ev->get_type_code() != FORMAT_DESCRIPTION_EVENT) { if ((!rli->is_parallel_exec() || - !rli->curr_group_is_parallel) + !rli->curr_group_is_parallel || rli->curr_event_is_not_in_group) && ev->get_type_code() != FORMAT_DESCRIPTION_EVENT) { DBUG_ASSERT(!rli->is_parallel_exec() || @@ -3063,7 +3064,8 @@ static int exec_relay_log_event(THD* thd // rli->curr_group_is_parallel (rli->curr_group_seen_begin || rli->last_assigned_worker != NULL)) - && !rli->curr_group_seen_begin)); + && (!rli->curr_group_seen_begin || + ev->parallel_exec_by_coordinator(::server_id)))); /* MTS: Observation/todo. ROWS_QUERY_LOG_EVENT could be supported easier if @@ -3083,6 +3085,8 @@ static int exec_relay_log_event(THD* thd ev= NULL; } } + if (rli->curr_event_is_not_in_group) + rli->curr_event_is_not_in_group= FALSE; } /* @@ -4348,6 +4352,7 @@ int slave_start_workers(Relay_log_info * rli->curr_group_isolated= FALSE; rli->run_query_in_parallel= opt_mts_slave_run_query_in_parallel; rli->checkpoint_seqno= 0; + 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 --===============0302302058== 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: ed3578747c6d97dd4eac37f3a05926bbd0db0c86 # timestamp: 2010-12-22 20:35:15 +0200 # base_revision_id: alfranio.correia@stripped\ # 7m2y324zmqku1tdg # # Begin bundle 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 LuSKcKEhAvG5vg== --===============0302302058==--