1
0
mirror of https://github.com/MariaDB/server.git synced 2025-11-28 17:36:30 +03:00
Files
mariadb/mysql-test/suite/rpl/r
Kristian Nielsen f27817c1d0 MDEV-7326: Server deadlock in connection with parallel replication
The bug occurs when a transaction does a retry after all transactions have
done mark_start_commit() in a batch of group commit from the master. In this
case, the retrying transaction can unmark_start_commit() after the following
batch has already started running and de-allocated the GCO. Then after retry,
the transaction will re-do mark_start_commit() on a de-allocated GCO, and also
wakeup of later GCOs can be lost.

This was seen "in the wild" by a user, even though it is not known exactly
what circumstances can lead to retry of one transaction after all transactions
in a group have reached the commit phase.

The lifetime around GCO was somewhat clunky anyway. With this patch, a GCO
lives until rpl_parallel_entry::last_committed_sub_id has reached the last
transaction in the GCO. This guarantees that the GCO will still be alive when
a transaction does mark_start_commit(). Also, we now loop over the list of
active GCOs for wakeup, to ensure we do not lose a wakeup even in the
problematic case.
2015-01-07 14:45:39 +01:00
..
2013-07-21 19:24:20 +02:00
2011-12-01 00:54:54 +00:00
2011-02-20 18:51:43 +02:00
2013-05-08 13:36:17 +04:00
2012-09-27 20:09:46 +02:00
2013-06-06 17:51:28 +02:00
2014-02-11 16:57:28 +02:00
2013-10-29 15:08:44 +01:00
2013-07-21 16:39:19 +02:00
2013-07-05 19:57:48 +04:00
2011-10-19 21:45:18 +02:00
2013-05-28 15:39:56 +02:00
2013-10-14 00:24:05 +03:00
2011-07-02 22:08:51 +02:00
2012-09-27 20:09:46 +02:00
2014-08-10 14:36:17 +02:00
2012-09-22 15:30:24 +03:00
2014-03-15 18:24:15 +01:00
2014-02-01 00:54:03 +01:00
2014-01-22 15:29:36 +01:00
2011-07-02 22:12:12 +02:00
2011-12-12 23:58:40 +01:00
2014-02-01 00:54:03 +01:00
2013-07-21 16:39:19 +02:00
2013-12-16 13:02:21 +01:00
2012-01-16 20:16:35 +01:00
2013-07-13 22:29:30 +02:00
2014-08-02 21:26:16 +02:00
2013-05-07 13:05:09 +02:00
2011-10-19 21:45:18 +02:00
2014-01-22 15:29:36 +01:00
2011-07-02 22:12:12 +02:00
2012-03-12 23:15:01 +00:00
2014-03-15 18:24:15 +01:00
2014-08-02 21:26:16 +02:00
2011-10-19 21:45:18 +02:00
2011-10-19 21:45:18 +02:00
2011-10-19 21:45:18 +02:00
2012-08-09 17:22:00 +02:00