• Marko Mäkelä's avatar
    MDEV-25491: Race condition between DROP TABLE and purge of SYS_INDEXES record · f619d79b
    Marko Mäkelä authored
    btr_free_if_exists(): Always use the BUF_GET_POSSIBLY_FREED mode
    when accessing pages, because due to MDEV-24589 the function
    fil_space_t::set_stopping(true) can be called at any time during
    the execution of this function.
    
    mtr_t::m_freeing_tree: New data member for debugging purposes.
    
    buf_page_get_low(): Assert that the BUF_GET mode is not being used
    anywhere during the execution of btr_free_if_exists().
    
    In all code related to freeing or allocating pages, we will add some
    robustness, by making more use of BUF_GET_POSSIBLY_FREED and by
    reporting an error instead of crashing in some cases of corruption.
    f619d79b
btr0btr.cc 152 KB