• Dmitry Lenev's avatar
    Fix for bug #50784 "MDL: Assertion `m_tickets.is_empty() || · 0ede7125
    Dmitry Lenev authored
    m_tickets.front() == m_trans_sentinel'".
    
    Debug build of server crashed due to assert failure in MDL
    subsystem when one tried to execute multi-table REPAIR or
    OPTIMIZE in autocommit=0 mode.
    
    The assert failure occured when multi-table REPAIR or OPTIMIZE
    started processing of second table from its table list and
    tried to acquire upgradable metadata lock on this table.
    The cause of the assert failure were MDL locks left over from
    processing of previous table. It turned out that in autocommit=0
    mode close_thread_tables() which happens at the end of table
    processing doesn't release metadata locks.
    
    This fix solves problem by releasing locks explicitly using
    MDL_context::release_trans_locks() call.
    0ede7125
repair.test 5.46 KB