• Marko Mäkelä's avatar
    MDEV-11985 Make innodb_read_only shutdown more robust · 2f00b73a
    Marko Mäkelä authored
    If InnoDB is started in innodb_read_only mode such that
    recovered incomplete transactions exist at startup
    (but the redo logs are clean), an assertion will fail at shutdown,
    because there would exist some non-prepared transactions.
    
    logs_empty_and_mark_files_at_shutdown(): Do not wait for incomplete
    transactions to finish if innodb_read_only or innodb_force_recovery>=3.
    Wait for purge to finish in only one place.
    
    trx_sys_close(): Relax the assertion that would fail first.
    
    trx_free_prepared(): Also free recovered TRX_STATE_ACTIVE transactions
    if innodb_read_only or innodb_force_recovery>=3.
    
    Also, revert my earlier fix to MySQL 5.7 because this fix is more generic:
    
    Bug#20874411 INNODB SHUTDOWN HANGS IF INNODB_FORCE_RECOVERY>=3
    SKIPPED ANY ROLLBACK
    
    trx_undo_fake_prepared(): Remove.
    
    trx_sys_any_active_transactions(): Revert the changes.
    2f00b73a
read_only_recovery.result 957 Bytes