Backport MDEV-13430 recovery improvement to MariaDB 10.2
If the latest InnoDB redo log checkpoint was stored in the first checkpoint slot and not the second one, InnoDB would incorrectly set log_sys->log.lsn to the previous checkpoint. It is possible that this logic error did not exist before commit 86927cc7, which removed traces of multiple InnoDB redo logs, to prepare for MDEV-12548 (Mariabackup for MariaDB 10.2). In the worst case, this error could mean that InnoDB unnecessarily fails to recover from redo log when the last-but-one checkpoint was overwritten, but the last checkpoint is intact. recv_find_max_checkpoint(), recv_find_max_checkpoint_0(): Do not overwrite the fields of log_sys->log with the information of an older checkpoint. recv_find_max_checkpoint(): Do not return DB_SUCCESS on an error. recv_recovery_from_checkpoint_start(): Return early if the log is in a version-tagged format but not in the latest format. (In this case, the log must be logically empty, and there is nothing to apply.)
Showing
Please register or sign in to comment