diff options
author | unknown <knielsen@knielsen-hq.org> | 2014-04-09 14:42:46 +0200 |
---|---|---|
committer | unknown <knielsen@knielsen-hq.org> | 2014-04-09 14:42:46 +0200 |
commit | 2480b60bb7f2df072571ca19e35a44c92465d67e (patch) | |
tree | 26b5d27b7f27852d404654899db43ac2c59c2135 /sql/rpl_parallel.cc | |
parent | b1a1a79a69c0cdb21334002693d05237a02ede98 (diff) | |
download | mariadb-git-2480b60bb7f2df072571ca19e35a44c92465d67e.tar.gz |
MDEV-5938: Exec_master_log_pos not updated at log rotate in parallel replication
The code did not correctly handle the update of position for Rotate events in the
binlog/relaylog when using parallel replication.
Diffstat (limited to 'sql/rpl_parallel.cc')
-rw-r--r-- | sql/rpl_parallel.cc | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/sql/rpl_parallel.cc b/sql/rpl_parallel.cc index 9c4c819c022..5c902249914 100644 --- a/sql/rpl_parallel.cc +++ b/sql/rpl_parallel.cc @@ -1495,7 +1495,6 @@ rpl_parallel::do_event(rpl_group_info *serial_rgi, Log_event *ev, } else if (!is_group_event) { - my_off_t log_pos; int err; bool tmp; /* @@ -1509,7 +1508,13 @@ rpl_parallel::do_event(rpl_group_info *serial_rgi, Log_event *ev, serial_rgi->is_parallel_exec= true; err= rpt_handle_event(qev, NULL); serial_rgi->is_parallel_exec= tmp; - log_pos= ev->log_pos; + if (ev->is_relay_log_event()) + qev->future_event_master_log_pos= 0; + else if (typ == ROTATE_EVENT) + qev->future_event_master_log_pos= + (static_cast<Rotate_log_event *>(ev))->pos; + else + qev->future_event_master_log_pos= ev->log_pos; delete_or_keep_event_post_apply(serial_rgi, typ, ev); if (err) @@ -1532,7 +1537,6 @@ rpl_parallel::do_event(rpl_group_info *serial_rgi, Log_event *ev, the current point. */ qev->ev= NULL; - qev->future_event_master_log_pos= log_pos; } else { |