• Marko Mäkelä's avatar
    MDEV-25016 Race condition between lock_sys_t::cancel() and page split or merge · 1c7d4f8d
    Marko Mäkelä authored
    In commit 8d16da14 (MDEV-24789)
    we accidentally introduced a race condition. During the time a
    waiting lock request is being removed, the request might be
    moved to another page due to a concurrent page split or merge.
    To prevent this, we must hold exclusive lock_sys.latch when releasing
    a record lock.
    
    lock_release_autoinc_locks(): Avoid a potential hang.
    No dict_table_t::lock_mutex must be waited for while already holding
    lock_sys.wait_mutex or trx_t::mutex.
    
    lock_cancel_waiting_and_release(): Correctly handle AUTO_INCREMENT locks.
    1c7d4f8d
lock0lock.cc 178 KB