mariadb/storage/innobase/dict
mariadb-DebarunBanerjee 77bebe9eb0 MDEV-36226 Stall and crash when page cleaner fails to generate free pages during Async flush
During regular iteration the page cleaner does flush from flush list
with some flush target and then goes for generating free pages from LRU
tail. When asynchronous flush is triggered i.e. when 7/8 th of the LSN
margin is filled in the redo log, the flush target for flush list is
set to innodb_io_capacity_max. If it could flush all, the flush
bandwidth for LRU flush is currently set to zero. If the LRU tail has
dirty pages, page cleaner ends up freeing no pages in one iteration.
The scenario could repeat across multiple iterations till async flush
target is reached. During this time the DB system is starved of free
pages resulting in apparent stall and in some cases dict_sys latch
fatal error.

Fix: In page cleaner iteration, before LRU flush, ensure we provide
enough flush limit so that freeing pages is no blocked by dirty pages
in LRU tail. Log IO and flush state if double write flush wait is long.

Reviewed by: Marko Mäkelä
2025-03-31 19:09:23 +05:30
..
dict0boot.cc MDEV-32068 Some calls to buf_read_ahead_linear() seem to be useless 2023-12-05 12:31:29 +02:00
dict0crea.cc Merge branch '10.5' into 10.6 2025-01-29 11:17:38 +01:00
dict0defrag_bg.cc MDEV-36122: Protect table references with a lock 2025-03-26 14:22:58 +02:00
dict0dict.cc MDEV-36226 Stall and crash when page cleaner fails to generate free pages during Async flush 2025-03-31 19:09:23 +05:30
dict0load.cc MDEV-35494 fil_space_t::fil_space_t() may be unsafe with GCC -flifetime-dse 2024-12-11 14:44:42 +02:00
dict0mem.cc MDEV-35854: Simplify dict_get_referenced_table() 2025-01-23 14:38:08 +02:00
dict0stats.cc MDEV-36122: Protect table references with a lock 2025-03-26 14:22:58 +02:00
dict0stats_bg.cc Fix galera.galera_kill_ddl test errors in debug mode. 2023-12-22 17:55:30 +01:00
drop.cc MDEV-35701 trx_t::autoinc_locks causes unnecessary dynamic memory allocation 2025-01-15 16:55:01 +02:00