MDEV-26914: Unreleased mutex in the exec_relay_log_event() function
In the replication-related code, in the exec_relay_log_event() (slave.cc) function, where the "data_lock" mutex is captured, this mutex is then not released on one of the early return branches within a specific insert for WSREP, namely under the branch: "if (wsrep_before_statement(thd))". As a result, the mutex remains captured, resulting in errors or hangs. This commit fixes this issue, which is now showing up as intermittent failures in mtr tests for galera and galera_sr suites.
This commit is contained in:
parent
772d6d347d
commit
7948a1dc53
@ -4124,6 +4124,8 @@ static int exec_relay_log_event(THD* thd, Relay_log_info* rli,
|
|||||||
#ifdef WITH_WSREP
|
#ifdef WITH_WSREP
|
||||||
if (wsrep_before_statement(thd))
|
if (wsrep_before_statement(thd))
|
||||||
{
|
{
|
||||||
|
mysql_mutex_unlock(&rli->data_lock);
|
||||||
|
delete ev;
|
||||||
WSREP_INFO("Wsrep before statement error");
|
WSREP_INFO("Wsrep before statement error");
|
||||||
DBUG_RETURN(1);
|
DBUG_RETURN(1);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user