Bug #65443 | Failure when applying insert buffer changes during crash recovery | ||
---|---|---|---|
Submitted: | 28 May 2012 21:18 | Modified: | 18 Sep 2012 10:07 |
Reporter: | Nizameddin Ordulu | Email Updates: | |
Status: | Duplicate | Impact on me: | |
Category: | MySQL Server: InnoDB storage engine | Severity: | S1 (Critical) |
Version: | 5.6 | OS: | Any |
Assigned to: | CPU Architecture: | Any | |
Tags: | crash recovery, debug assertion, insert buffer |
[28 May 2012 21:18]
Nizameddin Ordulu
[29 May 2012 4:06]
Valeriy Kravchuk
This is likely a duplicate of Bug #58571. Check last comments from Marko there, they may give some hints.
[29 May 2012 18:55]
Mark Callaghan
For 5.1, the assert in ibuf_insert_to_index_page is new with 3351.14.276 marko.m | | /* This is based on | row_ins_sec_index_entry_by_modify(BTR_MODIFY_LEAF). */ | ut_ad(rec_get_deleted_flag(rec, page_is_comp(page))); | And that comes from revno: 3513 [merge] committer: Georgi Kodinov <Georgi.Kodinov@Oracle.com> branch nick: merge-5.1-security timestamp: Fri 2010-10-29 14:02:49 +0300 message: merge to 5.1-security ------------------------------------------------------------ revno: 3452.1.96 [merge] committer: Vasil Dimov <vasil.dimov@oracle.com> branch nick: mysql-5.1-bugteam timestamp: Fri 2010-10-29 10:45:11 +0300 message: Merge mysql-5.1-innodb -> mysql-5.1-bugteam ------------------------------------------------------------ revno: 3351.14.276 committer: Marko Mäkelä <marko.makela@oracle.com> branch nick: 5.1-innodb timestamp: Tue 2010-10-19 09:04:15 +0300 message: Bug #56680 wrong InnoDB results from a case-insensitive covering index row_search_for_mysql(): When a secondary index record might not be visible in the current transaction's read view and we consult the clustered index and optionally some undo log records, return the relevant columns of the clustered index record to MySQL instead of the secondary index record. ibuf_insert_to_index_page_low(): New function, refactored from ibuf_insert_to_index_page(). ibuf_insert_to_index_page(): When we are inserting a record in place of a delete-marked record and some fields of the record differ, update that record just like row_ins_sec_index_entry_by_modify() would do. btr_cur_update_alloc_zip(): Make the function public. mysql_row_templ_t: Add clust_rec_field_no. row_sel_store_mysql_rec(), row_sel_push_cache_row_for_mysql(): Add the flag rec_clust, for returning data at clust_rec_field_no instead of rec_field_no. Resurrect the debug assertion that the record not be marked for deletion. (Bug #55626) [UNIV_DEBUG || UNIV_IBUF_DEBUG] ibuf_debug, buf_page_get_gen(), buf_flush_page_try(): Implement innodb_change_buffering_debug=1 for evicting pages from the buffer pool, so that change buffering will be attempted more frequently.
[17 Aug 2012 12:24]
Marko Mäkelä
This looks like a logical duplicate of Bug#58571 ut_ad assert rec_get_deleted_flag(rec, page_is_comp(page)) So far, we have failed to reproduce this with a simple test case. Reproduction could become easier with 5.6.6, where we sometimes can trigger this bug in row0log.cc, in online ALTER TABLE that involves rebuilding the table.
[18 Sep 2012 10:07]
Marko Mäkelä
This seems to be a duplicate of Bug#66819. My test case for this bug is not failing with the patch applied, and I was able to trigger this very assertion with instrumented code (fault injection).