• Thirunarayanan Balathandayuthapani's avatar
    MDEV-14711 Assertion `mode == 16 || mode == 12 ||... · 5f1ec5cb
    Thirunarayanan Balathandayuthapani authored
    MDEV-14711 Assertion `mode == 16 || mode == 12 || !fix_block->page.file_page_was_freed' failed in buf_page_get_gen (rollback requesting a freed undo page)
    
    Problem:
    =======
    In buf_cur_optimistic_latch_leaves(), requesting a left block with BTR_GET
    after releasing current block. But there is no guarantee that left block
    could be still available.
    
    Fix:
    ====
    
    (1) In btr_cur_optimistic_latch_leaves(), replace the BUF_GET with
    BUF_GET_POSSIBLY_FREED for fetching left block.
    (2) Once InnoDB acquires left block, it should check FIL_PAGE_NEXT with
    current block page number. If not, release cursor->left_block and return
    false.
    5f1ec5cb
btr0cur.cc 227 KB