diff options
author | unknown <knielsen@knielsen-hq.org> | 2013-10-25 21:17:14 +0200 |
---|---|---|
committer | unknown <knielsen@knielsen-hq.org> | 2013-10-25 21:17:14 +0200 |
commit | 6a38b594759c41bd3d45ad89379ff38864bd4ba4 (patch) | |
tree | d64dc292005a98e5ade6e943fb5aed1eda3ee0f0 /sql/rpl_gtid.h | |
parent | 80d0dd7babb5ade8345cdd7065e8f9ef6b65e3da (diff) | |
download | mariadb-git-6a38b594759c41bd3d45ad89379ff38864bd4ba4.tar.gz |
MDEV-5189: Incorrect parallel apply in parallel replication
Two problems were fixed:
1. When not in GTID mode (master_use_gtid=no), then we must not apply events
in different domains in parallel (in non-GTID mode we are not capable of
restarting at different points in different domains).
2. When transactions B and C group commit together, but after and separate
from A, we can apply B and C in parallel, but both B and C must not start
until A has committed. Fix sub_id to be globally increasing (not just
per-domain increasing) so that this wait (which is based on sub_id) can be
done correctly.
Diffstat (limited to 'sql/rpl_gtid.h')
-rw-r--r-- | sql/rpl_gtid.h | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/sql/rpl_gtid.h b/sql/rpl_gtid.h index 525b34cb160..39c9aee0b9d 100644 --- a/sql/rpl_gtid.h +++ b/sql/rpl_gtid.h @@ -60,7 +60,6 @@ struct rpl_slave_state struct element { struct list_element *list; - uint64 last_sub_id; uint32 domain_id; list_element *grab_list() { list_element *l= list; list= NULL; return l; } @@ -68,8 +67,6 @@ struct rpl_slave_state { l->next= list; list= l; - if (last_sub_id < l->sub_id) - last_sub_id= l->sub_id; } }; @@ -78,6 +75,7 @@ struct rpl_slave_state /* Mutex protecting access to the state. */ mysql_mutex_t LOCK_slave_state; + uint64 last_sub_id; bool inited; bool loaded; |