• Marko Mäkelä's avatar
    MDEV-26827 fixup: hangs and !os_aio_pending_writes() assertion failures · 40eff3f8
    Marko Mäkelä authored
    buf_LRU_get_free_block(): Always wake up the page cleaner if needed
    before exiting the inner loop.
    
    srv_prepare_to_delete_redo_log_file():
    Replace a debug assertion with a wait in debug builds.
    Starting with commit 7e31a8e7
    the debug assertion ut_ad(!os_aio_pending_writes())
    could occasionally fail, while it would hold in core dumps of crashes.
    The failure can be reproduced more easily by adding a sleep to the
    write completion callback function, right before releasing to
    write_slots.
    
    srv_start(): Remove a bogus debug assertion
    ut_ad(!os_aio_pending_writes()) that could fail in
    mariadb-backup --prepare. In an rr replay trace, we had
    buf_pool.flush_list.count==0 but write_slots->m_cache.m_pos==1
    and buf_page_t::write_complete() was executing u_unlock().
    40eff3f8
buf0lru.cc 43.1 KB