• Thirunarayanan Balathandayuthapani's avatar
    MDEV-15641 InnoDB crash while committing table-rebuilding ALTER TABLE · 64900e3d
    Thirunarayanan Balathandayuthapani authored
    Problem:
    ========
     There is a possibility that there can be more concurrent DMLs While the
    alter table thread is waiting for upgrading to MDL_EXCLUSIVE before commit phase.
    In commit phase, InnoDB acquires dict_operation_lock and it already holds MDL_EXCLUSIVE
    on the table. After that, InnoDB applies the concurrent DML logs in commit phase.
    This could lead to blocking of the following things:
    
      1) DML on the particular table (due to MDL_EXCLUSIVE on the table)
      2) InnoDB DDLs (due to dict_operation_lock)
      3) Purge thread, stats thread, the master thread (due to dict_operation_lock)
    
    Fix:
    ====
    Apply the concurrent DML logs in commit phase but before acquiring
    dict_operation_lock in commit phase. It makes sure that (2), (3) can't be
    blocked for longer time.
    64900e3d
sql_table.cc 356 KB