summaryrefslogtreecommitdiff
path: root/sql/rpl_parallel.cc
diff options
context:
space:
mode:
authorunknown <knielsen@knielsen-hq.org>2013-06-28 15:19:30 +0200
committerunknown <knielsen@knielsen-hq.org>2013-06-28 15:19:30 +0200
commit1b3dc66e3117a09c95a00be2f649b975fdb25e2e (patch)
treedb25dcfc0af5b9cccda27ee022dd8bd7acee0ce2 /sql/rpl_parallel.cc
parent7e5dc4f074b7d1cee4721e6fa49d6e5628ef793f (diff)
downloadmariadb-git-1b3dc66e3117a09c95a00be2f649b975fdb25e2e.tar.gz
MDEV-4506: Parallel replication: Intermediate commit.
First step of splitting out part of Relay_log_info, so that different event groups being applied in parallel can each use their own copy.
Diffstat (limited to 'sql/rpl_parallel.cc')
-rw-r--r--sql/rpl_parallel.cc10
1 files changed, 7 insertions, 3 deletions
diff --git a/sql/rpl_parallel.cc b/sql/rpl_parallel.cc
index f1ac7e83071..8ea4799e94a 100644
--- a/sql/rpl_parallel.cc
+++ b/sql/rpl_parallel.cc
@@ -13,15 +13,18 @@ rpt_handle_event(rpl_parallel_thread::queued_event *qev,
struct rpl_parallel_thread *rpt)
{
int err;
- Relay_log_info *rli= qev->rli;
+ struct rpl_group_info *rgi= qev->rgi;
+ Relay_log_info *rli= rgi->rli;
thd->rli_slave= rli;
thd->rpl_filter = rli->mi->rpl_filter;
/* ToDo: Access to thd, and what about rli, split out a parallel part? */
mysql_mutex_lock(&rli->data_lock);
- err= apply_event_and_update_pos(qev->ev, thd, rli, rpt);
+ err= apply_event_and_update_pos(qev->ev, thd, rgi, rpt);
/* ToDo: error handling. */
/* ToDo: also free qev->ev, or hold on to it for a bit if necessary. */
+ my_free(rgi);
+ rgi= NULL;
}
@@ -398,7 +401,8 @@ rpl_parallel::do_event(Relay_log_info *rli, Log_event *ev, THD *parent_thd)
return true;
}
qev->ev= ev;
- qev->rli= rli;
+ qev->rgi= rli->group_info;
+ rli->group_info= NULL; /* Avoid conflict with groups applied in parallel */
qev->next= NULL;
if (ev->get_type_code() == GTID_EVENT)