lp:~knielsen/maria/dingqi-parallel-replication

Created by Kristian Nielsen and last modified
Get this branch:
bzr branch lp:~knielsen/maria/dingqi-parallel-replication
Only Kristian Nielsen can upload to this branch. If you are Kristian Nielsen please log in for upload directions.

Branch merges

Related bugs

Related blueprints

Branch information

Owner:
Kristian Nielsen
Project:
MariaDB
Status:
Development

Recent revisions

3444. By Kristian Nielsen

In-order commit for Taobao parallel replication.

Fix deadlock with MyISAM tables. If T2 got a table lock before T1,
then T1 would wait for T2 to complete, and T2 would wait for T1 to
commit -> deadlock.

Now, for non-transactional tables, we consider it a conflict when
*any* update happens to the same table (regardless of key values).
Most such updates to MyISAM cannot be done in parallel anyway due
to table-level locking.

(Later we might want to introduce a special flag for this for
storage engines, as even transactional engines could have
page-level locking or lock escalation or similar with similar
deadlock issues).

3443. By Kristian Nielsen

In-order commit for Taobao parallel replication.

Re-write the traversal of tree-of-waiters during group commit.
This avoids unbounded recursion, and also fixes a race in the
old code which could lead to deadlock.

3442. By Kristian Nielsen

In-order commit for Taobao parallel replication, intermediate commit

Push the wait_for_prior_commit down into TC_LOG_BINLOG. This allows
group commit to work.

There is a race in this code which can cause a deadlock. This happens
when a leader T1 grabs the group commit queue after T2 has put itself
into the queue, but before T2 has put a waitee T3 in the queue; T3
then becomes the next leader, but is never woken up.

But I will fix the race as part of refactoring to avoid unbounded
recursion in queue_for_group_commit().

3441. By Kristian Nielsen

In-order parallel replication: Fix group commit in InnoDB when no binlog on slave.

3440. By Kristian Nielsen

In-order commit for Taobao parallel replication.

Fix bug where we would wait for THD, not for transaction. This
fails if there are multiple transactions queued for one worker/
THD, we end up waking up too early on a previous commit.

Fix another bug where if the worker queue runs full, then we
would miscompute what to wait for and end up waiting for
our own transaction, causing a deadlock.

3439. By Kristian Nielsen

In-order commit for Taobao parallel replication, intermediate commit.

This patch does not work, as it handles the waiting in the wrong place.
This is just an intermediate commit before starting to refactor the code
to put the wait in the right place.

3438. By Kristian Nielsen

MDEV-520: Taobao parallel replication.

 - Fix memory leak due to missing call of ne_end()
 - Fix wrong use of open_normal_and_derived_tables() where plain
   open_tables() should be used.

(Probably these are mostly visible in debug build, which could be
the reason dingqi did not see them)

3437. By Kristian Nielsen

Fix copy of THD::variables, which caused problems due to not updating plugin reference count.

3436. By Kristian Nielsen

MDEV-520: Internal commit of dingqi's patch 3 for parallel replication.

3435. By Michael Widenius

Automatic merge

Branch metadata

Branch format:
Branch format 7
Repository format:
Bazaar repository format 2a (needs bzr 1.16 or later)
Stacked on:
lp:maria
This branch contains Public information 
Everyone can see this information.

Subscribers