• Marko Mäkelä's avatar
    MDEV-32899 InnoDB is holding shared dict_sys.latch while waiting for FOREIGN... · 569da6a7
    Marko Mäkelä authored
    MDEV-32899 InnoDB is holding shared dict_sys.latch while waiting for FOREIGN KEY child table lock on DDL
    
    lock_table_children(): A new function to lock all child tables of a table.
    We will only hold dict_sys.latch while traversing
    dict_table_t::referenced_set. To prevent a race condition with
    std::set::erase() we will copy the pointers to the child tables to a
    local vector. Once we have acquired references to all child tables,
    we can safely release dict_sys.latch, wait for the locks, and finally
    release the references.
    
    This fixes up commit 2ca11234 (MDEV-26217)
    and commit c3c53926 (MDEV-26554).
    569da6a7
lock0lock.h 44.9 KB