Bug #110832 | undo truncation in 5.7 is not crash safe | ||
---|---|---|---|
Submitted: | 27 Apr 2023 8:44 | Modified: | 16 May 2023 6:43 |
Reporter: | jie xu | Email Updates: | |
Status: | Can't repeat | Impact on me: | |
Category: | MySQL Server: InnoDB storage engine | Severity: | S1 (Critical) |
Version: | 5.7 | OS: | Any |
Assigned to: | CPU Architecture: | Any |
[27 Apr 2023 8:44]
jie xu
[3 May 2023 5:33]
MySQL Verification Team
Hello jie xu, Thank you for the report and feedback. With the slight modification(no test case changes but the way it is invoked), I tried the test case mentioned in https://bugs.mysql.com/bug.php?id=93170 but not seeing any issues. Do you have a test case which confirms the issue? Thank you. - ./mtr innodb_undo.truncate_recover --mysqld=--innodb_undo_tablespaces=2 --bootstrap=--innodb_undo_tablespaces=2 --big-test --debug-server Logging: ./mtr innodb_undo.truncate_recover --mysqld=--innodb_undo_tablespaces=2 --bootstrap=--innodb_undo_tablespaces=2 --big-test --debug-server MySQL Version 5.7.42 Checking supported features... - SSL connections supported - binaries are debug compiled Collecting tests... Checking leftover processes... - found old pid 9778 in 'mysqld.1.pid', killing it... process did not exist! Removing old var directory... Creating var directory '/export/home/tmp/ushastry/mysql-5.7.42/mysql-test/var'... Installing system database... Using parallel: 1 ============================================================================== TEST RESULT TIME (ms) or COMMENT -------------------------------------------------------------------------- worker[1] Using MTR_BUILD_THREAD 300, with reserved ports 13000..13009 [ 50%] innodb_undo.truncate_recover [ pass ] 94843 [100%] shutdown_report [ pass ] -------------------------------------------------------------------------- The servers were restarted 0 times Spent 94.843 of 102 seconds executing testcases Completed: All 2 tests were successful. regards, Umesh
[5 May 2023 6:33]
jie xu
I tried to reproduce this issue locally, finally it didn't occur. But i did encounter this issue in our production environment. A MySQL instance apply redo crashed when recovery. I found this recovery checkpoint lsn is 43977226940520, but the undo truncate log lsn is 43977957543246; the checkpoint lsn is too small. And MySQL 8.0 hasn't this bug, since it use log_make_latest_checkpoint() to make checkpoint when undo truncate; this func make sure make checkpoint to latest lsn.
[16 May 2023 6:43]
jie xu
Is there any progress recently?