diff options
Diffstat (limited to 'sql/service_wsrep.cc')
| -rw-r--r-- | sql/service_wsrep.cc | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/sql/service_wsrep.cc b/sql/service_wsrep.cc index 013ec65d3f5..ce18410d9af 100644 --- a/sql/service_wsrep.cc +++ b/sql/service_wsrep.cc @@ -206,7 +206,15 @@ extern "C" my_bool wsrep_thd_bf_abort(THD *bf_thd, THD *victim_thd, as RSU has paused the provider. */ if ((ret || !wsrep_on(victim_thd)) && signal) - victim_thd->awake(KILL_QUERY); + { + mysql_mutex_assert_not_owner(&victim_thd->LOCK_thd_data); + mysql_mutex_assert_not_owner(&victim_thd->LOCK_thd_kill); + mysql_mutex_lock(&victim_thd->LOCK_thd_data); + mysql_mutex_lock(&victim_thd->LOCK_thd_kill); + victim_thd->awake_no_mutex(KILL_QUERY); + mysql_mutex_unlock(&victim_thd->LOCK_thd_kill); + mysql_mutex_unlock(&victim_thd->LOCK_thd_data); + } return ret; } |
