summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Lindström <jan.lindstrom@mariadb.com>2021-02-16 12:19:19 +0200
committerJan Lindström <jan.lindstrom@mariadb.com>2021-02-17 10:28:37 +0200
commit5ecaf52d42a1e464c71515f35be97855072bcafe (patch)
tree017e3d3fec220ed9660c6735427bb7c6186b0e20
parent45e33e05e2529e456fc4ce28f9f32fbe1a546526 (diff)
downloadmariadb-git-5ecaf52d42a1e464c71515f35be97855072bcafe.tar.gz
MDEV-24873 : galera.galera_as_slave_ctas MTR failed: Assertion `(&(&LOCK_thd_data)->m_mutex)->count > 0 && pthread_equal(pthread_self(), (&(&LOCK_thd_data)->m_mutex)->thread)' failed in sql_class.cc on THD::awake(killed_state)
Problem was that thd::awake assumes now that you hold THD::LOCK_thd_data so we need to keep it when we call wsrep_thd_awake from wsrep_abort_transaction.
-rw-r--r--storage/innobase/handler/ha_innodb.cc2
1 files changed, 1 insertions, 1 deletions
diff --git a/storage/innobase/handler/ha_innodb.cc b/storage/innobase/handler/ha_innodb.cc
index 58a07e46be6..2c51f0a9fdf 100644
--- a/storage/innobase/handler/ha_innodb.cc
+++ b/storage/innobase/handler/ha_innodb.cc
@@ -19776,8 +19776,8 @@ wsrep_abort_transaction(
WSREP_DEBUG("victim does not have transaction");
wsrep_thd_LOCK(victim_thd);
wsrep_thd_set_conflict_state(victim_thd, MUST_ABORT);
- wsrep_thd_UNLOCK(victim_thd);
wsrep_thd_awake(victim_thd, signal);
+ wsrep_thd_UNLOCK(victim_thd);
}
DBUG_VOID_RETURN;