[MDEV-27610] Unnecessary wait in InnoDB crash recovery Created: 2022-01-25 Updated: 2022-02-01 Resolved: 2022-01-26 |
|
| Status: | Closed |
| Project: | MariaDB Server |
| Component/s: | Storage Engine - InnoDB |
| Affects Version/s: | 10.2, 10.3, 10.4, 10.5, 10.6, 10.7, 10.8 |
| Fix Version/s: | 10.5.14, 10.6.6, 10.7.2, 10.8.1 |
| Type: | Bug | Priority: | Major |
| Reporter: | Marko Mäkelä | Assignee: | Marko Mäkelä |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | performance, recovery | ||
| Issue Links: |
|
||||||||
| Description |
|
As noted in It actually suffices to simply call recv_read_in_area() in order to trigger a transition from page_recv_t::RECV_NOT_PROCESSED to page_recv_t::RECV_BEING_READ for the current block and possibly some following page numbers. This dead code seems to be present in all InnoDB versions. I think that this is only feasible to fix in 10.5 or later versions, thanks to code simplification that was performed in |
| Comments |
| Comment by Vladislav Lesin [ 2022-01-26 ] | ||||
|
The code (bb-10.5- It's supposed that recv_recover_page() will be invoked from fil_aio_callback(), and there is no need to invoke it from recv_sys_t::apply() synchronously with the page latching. pages.erase(r) is removed from recv_sys_t::apply(), but pages.clear() is invoked at the end of recv_sys_t::apply(). I don't see errors in the code. | ||||
| Comment by Matthias Leich [ 2022-01-26 ] | ||||
|
|