• Marko Mäkelä's avatar
    MDEV-13542: Crashing on corrupted page is unhelpful · 0b47c126
    Marko Mäkelä authored
    The approach to handling corruption that was chosen by Oracle in
    commit 177d8b0c
    is not really useful. Not only did it actually fail to prevent InnoDB
    from crashing, but it is making things worse by blocking attempts to
    rescue data from or rebuild a partially readable table.
    
    We will try to prevent crashes in a different way: by propagating
    errors up the call stack. We will never mark the clustered index
    persistently corrupted, so that data recovery may be attempted by
    reading from the table, or by rebuilding the table.
    
    This should also fix MDEV-13680 (crash on btr_page_alloc() failure);
    it was extensively tested with innodb_file_per_table=0 and a
    non-autoextend system tablespace.
    
    We should now avoid crashes in many cases, such as when a page
    cannot be read or allocated, or an inconsistency is detected when
    attempting to update multiple pages. We will not crash on double-free,
    such as on the recovery of DDL in system tab...
    0b47c126
row0mysql.cc 85.1 KB