[MDEV-26933] InnoDB fails to detect page number mismatch Created: 2021-10-29 Updated: 2023-05-29 Resolved: 2021-11-03 |
|
| Status: | Closed |
| Project: | MariaDB Server |
| Component/s: | Storage Engine - InnoDB |
| Affects Version/s: | 10.2, 10.3, 10.4, 10.5, 10.6 |
| Fix Version/s: | 10.6.6 |
| Type: | Bug | Priority: | Major |
| Reporter: | Marko Mäkelä | Assignee: | Marko Mäkelä |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | recovery | ||
| Issue Links: |
|
||||||||||||||||
| Description |
|
InnoDB is not checking that the page number in a buffer pool page is correct. The following would implement such a check:
This would be tripped in a number of tests that inject corruption to data files. Those tests will have to be adjusted. Furthermore, operations like DROP TABLE need to be fixed so that they will not attempt to load the table definition at all. This would avoids a crash in a test that corrupts the clustered index root page number of a table. The following fix for that test would be needed in any case:
|
| Comments |
| Comment by Marko Mäkelä [ 2021-11-02 ] | ||||||||||||||
|
I slightly revised this based on a test with a data directory that was archived for
While cleaning up the code, I realized that the InnoDB DDL rewrite in MariaDB Server 10.6 made obsolete the read-only startup parameter innodb_force_load_corrupted. I think that we should deprecate and ignore that parameter, and remove it in later versions. | ||||||||||||||
| Comment by Matthias Leich [ 2021-11-03 ] | ||||||||||||||
|
| ||||||||||||||
| Comment by Marko Mäkelä [ 2021-11-03 ] | ||||||||||||||
|
Thank you. The branch that you tested also included quite a bit of buf_block_t refactoring related to | ||||||||||||||
| Comment by Marko Mäkelä [ 2023-05-29 ] | ||||||||||||||
|
A motivation for implementing this debug check was the mystery |