Details
-
Bug
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Fixed
-
5.5(EOL), 10.0(EOL), 10.1(EOL), 10.2(EOL), 10.3(EOL), 10.4(EOL), 10.5
Description
In the function recv_parse_or_apply_log_rec_body() there are debug checks for validating the state of the page when redo log records are being applied. Most notably, FIL_PAGE_TYPE should be set before anything else is being written to the page.
The function ibuf_add_free_page() is violating this by invoking flst_add_last() before setting FIL_PAGE_TYPE. This bug was noticed during the testing of MDEV-19514.
Attachments
Issue Links
- blocks
-
MDEV-19514 Defer change buffer merge until pages are requested
-
- Closed
-
- relates to
-
MDEV-20813 Assertion `!srv_safe_truncate || !newest_lsn || fil_page_get_type(page)' or `!newest_lsn || fil_page_get_type(page)' failed in buf_flush_init_for_writing
-
- Closed
-
To 10.1, I pushed an additional change that asserts that when flushing pages, the FIL_PAGE_TYPE will be set. The doublewrite buffer creation during bootstrap is violating that, but I added an extra initialization for debug builds.
All in all, this should not impact non-debug builds at all. For release builds, we are slightly changing the order of redo log records in the mini-transaction of ibuf_add_free_page(). The volume of written redo log should remain unchanged.