summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarko Mäkelä <marko.makela@mariadb.com>2021-07-27 13:30:55 +0300
committerMarko Mäkelä <marko.makela@mariadb.com>2021-08-02 17:07:31 +0300
commit69cb4da106fc9baf6bb90df44ef23a82df102335 (patch)
tree43b3da17498b4963f12f993e47f9d57e1f802762
parent629f115a693a577c367a3b4677b77ec4413466d0 (diff)
downloadmariadb-git-10.6-MDEV-25919.tar.gz
MDEV-25919 WIP: add assertions (FIXME: crashes)10.6-MDEV-25919
-rw-r--r--storage/innobase/lock/lock0lock.cc20
1 files changed, 5 insertions, 15 deletions
diff --git a/storage/innobase/lock/lock0lock.cc b/storage/innobase/lock/lock0lock.cc
index 9f8fdd308aa..13b04a842e3 100644
--- a/storage/innobase/lock/lock0lock.cc
+++ b/storage/innobase/lock/lock0lock.cc
@@ -1264,19 +1264,13 @@ lock_rec_enqueue_waiting(
trx_t* trx = thr_get_trx(thr);
ut_ad(trx->mutex_is_owner());
+ ut_ad(!trx->dict_operation_lock_mode);
- if (UNIV_UNLIKELY(trx->dict_operation_lock_mode == RW_X_LATCH)) {
- ut_ad(!strcmp(index->table->name.m_name, TABLE_STATS_NAME)
- || !strcmp(index->table->name.m_name, INDEX_STATS_NAME));
-instant_timeout:
+ if (trx->mysql_thd && thd_lock_wait_timeout(trx->mysql_thd) == 0) {
trx->error_state = DB_LOCK_WAIT_TIMEOUT;
return DB_LOCK_WAIT_TIMEOUT;
}
- if (trx->mysql_thd && thd_lock_wait_timeout(trx->mysql_thd) == 0) {
- goto instant_timeout;
- }
-
/* Enqueue the lock request that will wait to be granted, note that
we already own the trx mutex. */
lock_t* lock = lock_rec_create_low(
@@ -1480,6 +1474,7 @@ lock_rec_lock(
((LOCK_MODE_MASK | LOCK_TABLE) & mode) == LOCK_X);
ut_ad(~mode & (LOCK_GAP | LOCK_REC_NOT_GAP));
ut_ad(dict_index_is_clust(index) || !dict_index_is_online_ddl(index));
+ ut_ad(!trx->dict_operation_lock_mode);
DBUG_EXECUTE_IF("innodb_report_deadlock", return DB_DEADLOCK;);
ut_ad((LOCK_MODE_MASK & mode) != LOCK_S ||
@@ -3094,6 +3089,7 @@ lock_table_create(
ut_ad(!trx->is_wsrep() || lock_sys.is_writer());
ut_ad(trx->state == TRX_STATE_ACTIVE || trx->is_recovered);
ut_ad(!trx->is_autocommit_non_locking());
+ ut_ad(!trx->dict_operation_lock_mode);
switch (LOCK_MODE_MASK & type_mode) {
case LOCK_AUTO_INC:
@@ -3310,13 +3306,7 @@ lock_table_enqueue_waiting(
trx_t* trx = thr_get_trx(thr);
ut_ad(trx->mutex_is_owner());
-
- if (UNIV_UNLIKELY(trx->dict_operation_lock_mode == RW_X_LATCH)) {
- ut_ad(!strcmp(table->name.m_name, TABLE_STATS_NAME)
- || !strcmp(table->name.m_name, INDEX_STATS_NAME));
- trx->error_state = DB_LOCK_WAIT_TIMEOUT;
- return DB_LOCK_WAIT_TIMEOUT;
- }
+ ut_ad(!trx->dict_operation_lock_mode);
#ifdef WITH_WSREP
if (trx->is_wsrep() && trx->lock.was_chosen_as_deadlock_victim) {