• Sergey Vojtovich's avatar
    MDEV-5089 - possible deadlocks between rwlocks and mutexes · bde11c1a
    Sergey Vojtovich authored
    Pre-MDL versions had direct relationship between LOCK_open and
    LOCK_global_system_variables, e.g.:
      intern_sys_var_ptr // locks LOCK_global_system_variable
      mysql_sys_var_char
      create_options_are_valid
      ha_innobase::create
      handler::ha_create
      ha_create_table
      rea_create_table
      mysql_create_table_no_lock // locks LOCK_open
      mysql_create_table
    
    With MDL this relationship was removed, but mutex order was still
    recorded. In fact there is indirect relationship between LOCK_open
    and LOCK_global_system_variables via rwlocks in reverse order.
    
    Removed LOCK_open and LOCK_global_system_variables order recording,
    instead assert that LOCK_open is never held in intern_sys_var_ptr().
    
    This solves only one of many problems detected with MDEV-5089.
    bde11c1a
mysqld.cc 278 KB