• Thirunarayanan Balathandayuthapani's avatar
    MDEV-30802 Assertion `index->is_btree() || index->is_ibuf()' failed in btr_search_guess_on_hash · 2fdacdcd
    Thirunarayanan Balathandayuthapani authored
    Problem:
    =======
     - There is a race condition between purge and rollback of alter
    operation. Alter rollback marks the index as corrupted.
    At the same time, purge is working on the same index and leads
    to assert failure. This is caused by
    commit 7c0b9c60 (MDEV-15250).
    
    Solution:
    =======
     - After MDEV-15250, InnoDB logs the operation only at the
    end of transaction commit and applies the log in
    ha_innobase::commit_inplace_alter_table() and
    also via dml thread. So there is no need for purge to work
    on uncommitted index.
    
    The assertion would fail in the test innodb.innodb-index-online
    when the following call is added to the start of the function
    row_purge_remove_sec_if_poss_leaf():
    if (!index->is_committed()) sleep(5);
    2fdacdcd
row0purge.cc 37.9 KB