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
-
Activity
Field | Original Value | New Value |
---|---|---|
Link |
This issue blocks |
issue.field.resolutiondate | 2019-10-11 11:15:11.0 | 2019-10-11 11:15:11.017 |
Resolution | Fixed [ 1 ] | |
Status | Open [ 1 ] | Closed [ 6 ] |
Link |
This issue relates to |
Workflow | MariaDB v3 [ 100352 ] | MariaDB v4 [ 156849 ] |
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.