diff options
author | Alexander Barkov <bar@mariadb.com> | 2019-10-01 09:37:40 +0400 |
---|---|---|
committer | Alexander Barkov <bar@mariadb.com> | 2019-10-01 09:37:40 +0400 |
commit | 7e44c455f4de82081af5089e1f77378676aa45ff (patch) | |
tree | 380cccc03bda084e6a8e38fd7ff6b4304ca8324a /sql/rpl_parallel.cc | |
parent | 6c2724fc05d12904f8c2f58f8dbadd9523d18c96 (diff) | |
parent | f203245e9edcfb202c1b23fba186be043ce6002d (diff) | |
download | mariadb-git-7e44c455f4de82081af5089e1f77378676aa45ff.tar.gz |
Merge remote-tracking branch 'origin/10.2' into 10.3
Diffstat (limited to 'sql/rpl_parallel.cc')
-rw-r--r-- | sql/rpl_parallel.cc | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/sql/rpl_parallel.cc b/sql/rpl_parallel.cc index 144b12a9fdf..90126448c30 100644 --- a/sql/rpl_parallel.cc +++ b/sql/rpl_parallel.cc @@ -228,6 +228,12 @@ finish_event_group(rpl_parallel_thread *rpt, uint64 sub_id, entry->stop_on_error_sub_id == (uint64)ULONGLONG_MAX) entry->stop_on_error_sub_id= sub_id; mysql_mutex_unlock(&entry->LOCK_parallel_entry); + DBUG_EXECUTE_IF("hold_worker_on_schedule", { + if (entry->stop_on_error_sub_id < (uint64)ULONGLONG_MAX) + { + debug_sync_set_action(thd, STRING_WITH_LEN("now SIGNAL continue_worker")); + } + }); DBUG_EXECUTE_IF("rpl_parallel_simulate_wait_at_retry", { if (rgi->current_gtid.seq_no == 1000) { @@ -1136,6 +1142,13 @@ handle_rpl_parallel_thread(void *arg) bool did_enter_cond= false; PSI_stage_info old_stage; + DBUG_EXECUTE_IF("hold_worker_on_schedule", { + if (rgi->current_gtid.domain_id == 0 && + rgi->current_gtid.seq_no == 100) { + debug_sync_set_action(thd, + STRING_WITH_LEN("now SIGNAL reached_pause WAIT_FOR continue_worker")); + } + }); DBUG_EXECUTE_IF("rpl_parallel_scheduled_gtid_0_x_100", { if (rgi->current_gtid.domain_id == 0 && rgi->current_gtid.seq_no == 100) { @@ -1177,7 +1190,10 @@ handle_rpl_parallel_thread(void *arg) skip_event_group= do_gco_wait(rgi, gco, &did_enter_cond, &old_stage); if (unlikely(entry->stop_on_error_sub_id <= rgi->wait_commit_sub_id)) + { skip_event_group= true; + rgi->worker_error= 1; + } if (likely(!skip_event_group)) do_ftwrl_wait(rgi, &did_enter_cond, &old_stage); |