[MDEV-27868] buf_pool.flush_list is in the wrong order Created: 2022-02-17 Updated: 2022-06-09 Resolved: 2022-02-17 |
|
| Status: | Closed |
| Project: | MariaDB Server |
| Component/s: | Storage Engine - InnoDB |
| Affects Version/s: | N/A |
| Fix Version/s: | 10.9.0, 10.8.3 |
| Type: | Bug | Priority: | Blocker |
| Reporter: | Marko Mäkelä | Assignee: | Marko Mäkelä |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | corruption, race, recovery, regression-10.8 | ||
| Issue Links: |
|
||||||||||||||||||||
| Description |
|
In In buf_pool_t::insert_into_flush_list() we attempted to compensate for this by not unconditionally inserting blocks first in buf_pool.flush_list but by searching for an appropriate insert position. This compensation does not appear to be working at all times. With the following command, I was able to reproduce a crash on my system:
The assertion reports that buf_pool.flush_list is not ordered by buf_page_t::oldest_modification(), like it must be. The impact of this bug is that log checkpoints and thus crash recovery and backup may work incorrectly. |
| Comments |
| Comment by Marko Mäkelä [ 2022-02-17 ] | ||||||||
|
Another failure:
| ||||||||
| Comment by Marko Mäkelä [ 2022-02-17 ] | ||||||||
|
I had forgotten that since |