summaryrefslogtreecommitdiff
path: root/sql/service_wsrep.cc
diff options
context:
space:
mode:
Diffstat (limited to 'sql/service_wsrep.cc')
-rw-r--r--sql/service_wsrep.cc10
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;
}