Bug #69780 | Fix for bug 14606334 in 5.6.11 breaks backward compatibility for InnoDB recovery | ||
---|---|---|---|
Submitted: | 18 Jul 2013 14:03 | Modified: | 9 Oct 2015 8:58 |
Reporter: | Alexey Kopytov | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Server: InnoDB storage engine | Severity: | S3 (Non-critical) |
Version: | 5.6.12 | OS: | Any |
Assigned to: | CPU Architecture: | Any |
[18 Jul 2013 14:03]
Alexey Kopytov
[18 Jul 2013 14:12]
Alexey Kopytov
Debug log: ... # The following deletes the last record on the page record type = 42 PAGE_HEAP_TOP=15408 # Page heap is reset in 5.6.11+ record type = 8 PAGE_HEAP_TOP=120 PAGE_N_RECS=0 record type = 38 PAGE_HEAP_TOP=120 PAGE_N_RECS=0 offset=99 record type = 38 PAGE_HEAP_TOP=128 PAGE_N_RECS=1 offset=125 record type = 38 PAGE_HEAP_TOP=136 PAGE_N_RECS=2 offset=133 record type = 38 PAGE_HEAP_TOP=144 PAGE_N_RECS=3 offset=141 # The following applies just fine with MySQL < 5.6.11, because the heap # is not reset, but crashes on 5.6.11+ record type = 38 PAGE_HEAP_TOP=152 PAGE_N_RECS=4 offset=8093
[29 Jul 2013 11:49]
MySQL Verification Team
looks like my internally filed: Bug 16996584 - 5.6.11+ REGRESSION: MULTIPLE CRASHES DURING CRASH RECOVERY
[29 Jul 2013 11:57]
MySQL Verification Team
Hello Alexey, Thank you for the bug report. As Shane pointed out, this is duplicate of internally reported Bug 16996584 - 5.6.11+ REGRESSION: MULTIPLE CRASHES DURING CRASH RECOVERY Thanks, Umesh
[5 Aug 2013 9:54]
Marko Mäkelä
I am sorry for introducing this regression. The new function page_create_empty() should not have been invoked when applying redo log entries for deleting records, because this could bring the PAGE_FREE list out of sync with subsequent redo log entries for the page. We should improve our cross-version regression testing. This is somewhat of a corner case, requiring a suitable combination of INSERT, UPDATE and DELETE operations and giving the purge an opportunity to run.
[9 Oct 2015 8:58]
MySQL Verification Team
Noted in 5.6.14, 5.7.2 changelogs. "A regression introduced in the fix for Bug #14606334 would cause crashes on startup during crash recovery."
[15 Jul 2016 9:53]
zhai weixiang
Hi, I just check the code and find that page_create_empty may still be invoked in function page_delete_rec_list_start during crash recovery process. All other places that invoke page_create_empty have checked if recv_recovery_is_on() Do i miss something ? Thank you for any comment :)