diff options
Diffstat (limited to 'storage/innobase/handler/ha_innodb.cc')
-rw-r--r-- | storage/innobase/handler/ha_innodb.cc | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/storage/innobase/handler/ha_innodb.cc b/storage/innobase/handler/ha_innodb.cc index 57ab80fe9f7..2620ec326f1 100644 --- a/storage/innobase/handler/ha_innodb.cc +++ b/storage/innobase/handler/ha_innodb.cc @@ -18618,7 +18618,15 @@ void lock_wait_wsrep_kill(trx_t *bf_trx, ulong thd_id, trx_id_t trx_id) lock_sys.cancel_lock_wait_for_trx(vtrx); DEBUG_SYNC(bf_thd, "before_wsrep_thd_abort"); - wsrep_thd_bf_abort(bf_thd, vthd, true); + if (!wsrep_thd_bf_abort(bf_thd, vthd, true)) + { + wsrep_thd_LOCK(vthd); + wsrep_thd_set_wsrep_aborter(NULL, vthd); + wsrep_thd_UNLOCK(vthd); + + WSREP_DEBUG("wsrep_thd_bf_abort has failed, victim %lu will survive", + thd_get_thread_id(vthd)); + } } wsrep_thd_kill_UNLOCK(vthd); } |