mirror of
https://github.com/MariaDB/server.git
synced 2025-02-09 23:24:11 +01:00
![Kristian Nielsen](/assets/img/avatar_default.png)
One case is conflicting transactions T1 and T2 with different domain id, in optimistic parallel replication in non-GTID mode. Then T2 will wait_for_prior_commit on T1; and if T1 got a row lock wait on T2 it would hang, as different domains caused the deadlock kill to be skipped in thd_rpl_deadlock_check(). More generally, if we have transactions T1 and T2 in one domain/master connection, and independent transactions U in another, then we can still deadlock like this: T1 row low wait on U U row lock wait on T2 T2 wait_for_prior_commit on T1 This commit enforces the deadlock kill in these cases. If the waited-for transaction is speculatively applied, then it will be deadlock killed in case of a conflict, even if the two transactions are in different domains or master connections. Reviewed-by: Andrei Elkin <andrei.elkin@mariadb.com> Signed-off-by: Kristian Nielsen <knielsen@knielsen-hq.org>
17 lines
258 B
INI
17 lines
258 B
INI
!include suite/rpl/my.cnf
|
|
|
|
[mysqld.1]
|
|
log-slave-updates
|
|
loose-innodb
|
|
|
|
[mysqld.2]
|
|
log-slave-updates
|
|
loose-innodb
|
|
|
|
[mysqld.3]
|
|
log-slave-updates
|
|
loose-innodb
|
|
|
|
[ENV]
|
|
SERVER_MYPORT_3= @mysqld.3.port
|
|
SERVER_MYSOCK_3= @mysqld.3.socket
|