Skip to content
  • Annamalai Gurusami's avatar
    dddd4b78
    Bug #21950756 INNODB: FAILING ASSERTION: !(&DICT_SYS->MUTEX)->IS_OWNED() · dddd4b78
    Annamalai Gurusami authored
    IN DICT0STATS.CC 3049
    
    Problem:
    
    When the information schema table information_schema.innodb_cmp_per_index
    is queried, an in-memory heap table is dynamically created and required
    data is populated.  The data is collected from the dictionary and populated
    in the heap table.  When the heap table becomes larger then it is converted to
    an on-disk InnoDB intrinsic temporary table.
    
    When the information is collected from data dictionary and populated in the
    in-memory heap table the dict_sys->mutex is taken.  This mutex will be released
    when the heap table is completely populated.  When the transition happens from
    in-memory heap table to on-disk InnoDB intrinsic temporary table, the
    dict_sys->mutex is being held.  So when the InnoDB intrinsic temporary table
    is created the dict_sys->mutex is being held.  This causes the assert.
    
    Solution:
    
    Before creating the InnoDB intrinsic temporary table release the
    dict_sys->mutex.  Reacquire the dict_sys->mutex after creating the InnoDB
    intrinsic temporary table.
    
    rb#11106 approved by Bin Su and Marc Alff.
    dddd4b78
    Bug #21950756 INNODB: FAILING ASSERTION: !(&DICT_SYS->MUTEX)->IS_OWNED()
    Annamalai Gurusami authored
    IN DICT0STATS.CC 3049
    
    Problem:
    
    When the information schema table information_schema.innodb_cmp_per_index
    is queried, an in-memory heap table is dynamically created and required
    data is populated.  The data is collected from the dictionary and populated
    in the heap table.  When the heap table becomes larger then it is converted to
    an on-disk InnoDB intrinsic temporary table.
    
    When the information is collected from data dictionary and populated in the
    in-memory heap table the dict_sys->mutex is taken.  This mutex will be released
    when the heap table is completely populated.  When the transition happens from
    in-memory heap table to on-disk InnoDB intrinsic temporary table, the
    dict_sys->mutex is being held.  So when the InnoDB intrinsic temporary table
    is created the dict_sys->mutex is being held.  This causes the assert.
    
    Solution:
    
    Before creating the InnoDB intrinsic temporary table release the
    dict_sys->mutex.  Reacquire the dict_sys->mutex after creating the InnoDB
    intrinsic temporary table.
    
    rb#11106 approved by Bin Su and Marc Alff.
Loading