mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
MDEV-24872 : galera.galera_insert_multi MTR failed: crash with SIGABRT
Problem was that we tried to lock THD::LOCK_thd_data after we have acquired lock_sys mutex. This is against mutex ordering rules.
This commit is contained in:
@ -4733,11 +4733,13 @@ thd_need_ordering_with(const MYSQL_THD thd, const MYSQL_THD other_thd)
|
|||||||
#ifdef WITH_WSREP
|
#ifdef WITH_WSREP
|
||||||
/* wsrep applier, replayer and TOI processing threads are ordered
|
/* wsrep applier, replayer and TOI processing threads are ordered
|
||||||
by replication provider, relaxed GAP locking protocol can be used
|
by replication provider, relaxed GAP locking protocol can be used
|
||||||
between high priority wsrep threads
|
between high priority wsrep threads. Note that this function
|
||||||
|
is called while holding lock_sys mutex, therefore we can't
|
||||||
|
use THD::LOCK_thd_data mutex below to follow mutex ordering rules.
|
||||||
*/
|
*/
|
||||||
if (WSREP_ON &&
|
if (WSREP_ON &&
|
||||||
wsrep_thd_is_BF(const_cast<THD *>(thd), false) &&
|
wsrep_thd_is_BF(const_cast<THD *>(thd), false) &&
|
||||||
wsrep_thd_is_BF(const_cast<THD *>(other_thd), true))
|
wsrep_thd_is_BF(const_cast<THD *>(other_thd), false))
|
||||||
return 0;
|
return 0;
|
||||||
#endif /* WITH_WSREP */
|
#endif /* WITH_WSREP */
|
||||||
rgi= thd->rgi_slave;
|
rgi= thd->rgi_slave;
|
||||||
|
Reference in New Issue
Block a user