lp:~maria-captains/maria/10.0-mdev6676
- Get this branch:
- bzr branch lp:~maria-captains/maria/10.0-mdev6676
Branch merges
Branch information
Recent revisions
- 4517. By Kristian Nielsen
-
MDEV-6676: Optimistic parallel replication.
Fix that --slave-
parallel- mode does not appear twice in mysqld --help
output.(Also fix small typo in help message).
- 4516. By Kristian Nielsen
-
MDEV-6676: Optimistic parallel replication
Update test suite to pass all tests, reflection code changes.
- 4515. By Kristian Nielsen
-
MDEV-6676: Optimistic parallel replication.
Change back to @@slave_
parallel_ mode being a command line option (instead of
CHANGE MASTER option saved in master.info).Implement that @@slave_
parallel_ mode can be set per multi-source connection,
both from command line and with SET.Change option name 'groupcommit' to 'follow_
master_ commit' following
discussions on maria-developers@. - 4514. By Kristian Nielsen
-
MDEV-6676: Speculative parallel replication: Intermediate commit.
Fix embedded server build.
- 4513. By Kristian Nielsen
-
MDEV-6676: Speculative parallel replication: Intermediate commit.
Preserve the value of @@replicate_
allow_parallel from the master in the
slave's binlog, so that it will be used correctly on deeper-level slaves as
well.Also preserve the FL_DDL and FL_WAITED flags from the master's GTID event in
the slave's binlog. - 4512. By Kristian Nielsen
-
MDEV-6676: Speculative parallel replication: Intermediate commit
Fix embarrasing "brown paper bag" bug with reverse test for DDL.
- 4511. By Kristian Nielsen
-
MDEV-6775: Wrong binlog order in parallel replication: Intermediate commit
Marked-for: 10.0
The code in binlog group commit around wait_for_commit that controls commit
order, did the wakeup of subsequent commits early, as soon as a following
transaction is put into the group commit queue, but before any such commit has
actually taken place. This causes problems with too early wakeup of
transactions that need to wait for prior to commit, but do not take part in
the binlog group commit for one reason or the other.This patch solves the problem, by moving the wakeup to happen only after the
binlog group commit is completed.This requires a new solution to ensure that transactions that arrive later
than the leader are still able to participate in group commit. This patch
introduces a flag wait_for_commit: :commit_ started. When this is set, a waiter
can queue up itself in the group commit queue.This way, effectively the wait_for_
prior_commit( ) is skipped only for
transactions that participate in group commit, so that skipping the wait is
safe. Other transactions still wait as needed for correctness. - 4510. By Kristian Nielsen
-
MDEV-6775: Wrong binlog order in parallel replication: Intermediate commit
Marked-for: 10.0
This just adds a test case that demonstrates the problem.
- 4509. By Kristian Nielsen
-
MDEV-6676: Speculative parallel replication: Intermediate commit.
Add an extra flag FL_DDL to the GTID event created on the master.
This allows the parallel slave to distinguish between DDL and
non-transactional DML.In case of DDL, it is not safe to run anything in parallel speculatively,
neither prior or following transactions. Not prior, because DDL cannot be
rolled back in case of conflicts. And not following, for example the DDL might
convert a non-transactional table into a transactional one, so this conversion
must be completed before a later transaction can be safely rolled back in case
of conflicts.In case of non-transactional DML, it is also not safe to run it in parallel
with earlier transactions, since in case of conflicts it can not be rolled
back. But it _is_ safe to run it in parallel with later transactions.Relaxing the requirements for non-transactional DML is beneficial when a few
non-transactional events occur in a stream of transactional DML, as would be a
typical use case. This way, the parallel apply of the transactional DML is not
disturbed or hindered. Before this commit, every non-transactional DML would
require first all running transactions to reach their commit phase, and only
then could following transactions start. With this commit, now following
transactions can be freely applied in parallel optimistically. Only the single
thread for which the non-transactional DML is scheduled needs to wait.The non-transactional DML will not be able to grup-commit together with the
prior transaction, as the wait is done with wait_for_prior_commit( ). - 4508. By Kristian Nielsen
-
MDEV-6676: Speculative parallel replication.
Better syntax for configuring the parallel mode. Now it is a CHANGE MASTER
option instead of a system variable, which makes it possible to configure
differently for different multi-source replication masters.Now also the domain-based replication mode can be disabled.
Branch metadata
- Branch format:
- Branch format 7
- Repository format:
- Bazaar repository format 2a (needs bzr 1.16 or later)
- Stacked on:
- lp:maria