• Marko Mäkelä's avatar
    MDEV-13869 MariaDB slow start · 33f70c4d
    Marko Mäkelä authored
    When code from MySQL 5.7.9 was merged to MariaDB 10.2.2
    in commit 2e814d47
    an assignment validate=true was inadvertently added to the function
    dict_check_sys_tables().
    
    This causes InnoDB to open every single .ibd file on startup, even
    when no crash recovery was needed.
    
    Simply removing the assignment would make some tests fail. We do the
    best to retain almost the same level of inconsistency detection.
    In the test innodb.table_flags, access to one of the tables will not
    be blocked despite inconsistent flags.
    
    dict_check_sys_tables(): Remove the problematic assignment, and skip
    validation in normal startup.
    
    dict_load_table_one(): If the .ibd file cannot be opened, mark the
    table as corrupted and unreadable.
    
    fil_node_open_file(): Validate FSP_SPACE_FLAGS with the expected
    flags. If reading the tablespace fails, invalidate node->handle
    instead of letting it remain stale. This bug was caught by a
    fil_validate() assertion failure.
    
    fsp_flags_try_adjust(): If the tablespace file is invalid, do nothing.
    33f70c4d
dict0load.cc 105 KB