summaryrefslogtreecommitdiff
path: root/sql/rpl_gtid.h
diff options
context:
space:
mode:
authorunknown <knielsen@knielsen-hq.org>2013-10-25 21:17:14 +0200
committerunknown <knielsen@knielsen-hq.org>2013-10-25 21:17:14 +0200
commit6a38b594759c41bd3d45ad89379ff38864bd4ba4 (patch)
treed64dc292005a98e5ade6e943fb5aed1eda3ee0f0 /sql/rpl_gtid.h
parent80d0dd7babb5ade8345cdd7065e8f9ef6b65e3da (diff)
downloadmariadb-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.h4
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;