mariadb/storage/innobase
Marko Mäkelä 138c11cce5 MDEV-22790 Race between btr_page_mtr_lock() dropping AHI on the same block
This race condition was introduced by
commit ad6171b91c (MDEV-22456).

In the observed case, two threads were executing
btr_search_drop_page_hash_index() on the same block,
to free a stale entry that was attached to a dropped index.
Both threads were holding an S latch on the block.

We must prevent the double-free of block->index by holding
block->lock in exclusive mode.

btr_search_guess_on_hash(): Do not invoke
btr_search_drop_page_hash_index(block) to get rid of
stale entries, because we are not necessarily holding
an exclusive block->lock here.

buf_defer_drop_ahi(): New function, to safely drop stale
entries in buf_page_mtr_lock(). We will skip the call to
btr_search_drop_page_hash_index(block) when only requesting
bufferfixing (no page latch), because in that case, we should
not be accessing the adaptive hash index, and we might get
a deadlock if we acquired the page latch.
2020-06-05 15:22:46 +03:00
..
btr MDEV-22790 Race between btr_page_mtr_lock() dropping AHI on the same block 2020-06-05 15:22:46 +03:00
buf MDEV-22790 Race between btr_page_mtr_lock() dropping AHI on the same block 2020-06-05 15:22:46 +03:00
data
dict dict_check_sys_tables(): Do not rely on buf_page_optimistic_get() 2020-06-04 16:31:29 +03:00
eval
fil MDEV-22721 Remove bloat caused by InnoDB logger class 2020-06-04 10:24:10 +03:00
fsp MDEV-22721 Remove bloat caused by InnoDB logger class 2020-06-04 10:24:10 +03:00
fts MDEV-22721 Remove bloat caused by InnoDB logger class 2020-06-04 10:24:10 +03:00
fut
gis MDEV-22456 Dropping the adaptive hash index may cause DDL to lock up InnoDB 2020-05-15 17:23:08 +03:00
ha
handler MDEV-22721 Remove bloat caused by InnoDB logger class 2020-06-04 10:24:10 +03:00
ibuf MDEV-22456 Dropping the adaptive hash index may cause DDL to lock up InnoDB 2020-05-15 17:23:08 +03:00
include MDEV-22721 Remove bloat caused by InnoDB logger class 2020-06-04 10:24:10 +03:00
lock MDEV-22721 Remove bloat caused by InnoDB logger class 2020-06-04 10:24:10 +03:00
log MDEV-22721 Remove bloat caused by InnoDB logger class 2020-06-04 10:24:10 +03:00
mach
mem
mtr
mysql-test/storage_engine
os MDEV-22554: "mariabackup --prepare" exits with code 0 even though innodb 2020-05-19 11:25:56 +03:00
page MDEV-22721 Remove bloat caused by InnoDB logger class 2020-06-04 10:24:10 +03:00
pars
que InnoDB: reduce size of dtuple_t 2020-03-20 21:35:42 +03:00
read
rem MDEV-21595: innodb offset_t rename to rec_offs 2020-04-29 12:02:47 +03:00
row MDEV-22721 Remove bloat caused by InnoDB logger class 2020-06-04 10:24:10 +03:00
srv MDEV-22721 Remove bloat caused by InnoDB logger class 2020-06-04 10:24:10 +03:00
sync MDEV-22544: Inconsistent and Incorrect rw-lock stats 2020-05-14 15:27:15 +08:00
trx MDEV-22721 Remove bloat caused by InnoDB logger class 2020-06-04 10:24:10 +03:00
ut MDEV-22721 Remove bloat caused by InnoDB logger class 2020-06-04 10:24:10 +03:00
.clang-format
bzip2.cmake
CMakeLists.txt
compile-innodb
COPYING.Google
COPYING.Percona
innodb.cmake
lz4.cmake
lzma.cmake
lzo.cmake
plugin_exports
snappy.cmake