Browse Source
MDEV-24188 Hang in buf_page_create() after reusing a previously freed page
MDEV-24188 Hang in buf_page_create() after reusing a previously freed page
The fix of MDEV-23456 (commit b1009ae5c1
)
introduced a livelock between page flushing and a thread that is
executing buf_page_create().
buf_page_create(): If the current mini-transaction is holding
an exclusive latch on the page, do not attempt to acquire another
one, and do not care about any I/O fix.
mtr_t::have_x_latch(): Replaces mtr_t::get_fix_count().
dyn_buf_t::for_each_block(const Functor&) const: A new variant.
rw_lock_own(): Add a const qualifier.
Reviewed by: Thirunarayanan Balathandayuthapani
bb-10.2-MDEV-24169
6 changed files with 97 additions and 58 deletions
-
52storage/innobase/buf/buf0buf.cc
-
20storage/innobase/include/dyn0buf.h
-
7storage/innobase/include/mtr0mtr.h
-
2storage/innobase/include/sync0rw.h
-
72storage/innobase/mtr/mtr0mtr.cc
-
2storage/innobase/sync/sync0rw.cc
Write
Preview
Loading…
Cancel
Save
Reference in new issue