Bug #41493 | Maria: two recovery failures (wrong logging of BLOB pages) | ||
---|---|---|---|
Submitted: | 16 Dec 2008 9:49 | Modified: | 7 May 2009 8:29 |
Reporter: | Guilhem Bichot | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Server: Maria storage engine | Severity: | S3 (Non-critical) |
Version: | 5.1-maria, 6.0-maria | OS: | Linux |
Assigned to: | Guilhem Bichot | CPU Architecture: | Any |
[16 Dec 2008 9:49]
Guilhem Bichot
[18 Dec 2008 15:55]
Guilhem Bichot
Worked on first crash, found something mysterious in log, sent question to Monty.
[19 Dec 2008 10:36]
Guilhem Bichot
Second failure has same ingredients.
[13 Jan 2009 13:17]
Guilhem Bichot
Here's a small repeatable testcase: use test; CREATE TABLE `t1` ( `blob` blob, `blob_key` blob ) ENGINE=maria ROW_FORMAT=page ; INSERT INTO `t1` VALUES (NULL,repeat('A',5198)); INSERT INTO `t1` VALUES (NULL,repeat('B',65535)); INSERT INTO `t1` VALUES (repeat('K',5198),repeat('L',2325)); INSERT INTO `t1` VALUES (repeat('C',65535),NULL); INSERT INTO `t1` VALUES (NULL,repeat('D',65535)); INSERT INTO `t1` VALUES (repeat('E',65535),repeat('F',16111)); INSERT INTO `t1` VALUES (repeat('G',65535),repeat('H',65535)); check table t1 extended; INSERT INTO `t1` VALUES (repeat('I',5198),repeat('J',65535)); check table t1 extended; When I run this, the table is not corrupted; then I do: cd var/master-data/ rm -ff test/t1.* /m/bzrrepos/mysql-maria/storage/maria/maria_read_log -a /m/bzrrepos/mysql-maria/storage/maria/maria_chk -e test/t1 Checking MARIA file: test/t1 Data records: 8 Deleted blocks: 0 - check file-size - check key delete-chain - check index reference - check records and index references maria_chk: error: Page 1: Row 6 is crashed And I see that sequence in the output of maria_read_log (due to the last INSERT): Rec#0 LSN (1,0x69700) short_trid 45404 redo_new_row_tail(num_type:4) len 5206 For table of short id 32, './test/t1' page 55, applying record Rec#0 LSN (1,0x6ab68) short_trid 45404 redo_insert_row_tail(num_type:2) len 103 For table of short id 32, './test/t1' page 10, applying record Rec#0 LSN (1,0x6abd5) short_trid 45404 redo_insert_row_head(num_type:1) len 44 For table of short id 32, './test/t1' page 1, applying record Rec#0 LSN (1,0x6ac07) short_trid 45404 redo_insert_row_blobs(num_type:5) len 65457 For table of short id 32, './test/t1', applying record where the redo_insert_row_blobs starts from page 55 (which is a tail page!?!). Next is investigating why such record was logged.
[13 Jan 2009 15:08]
Guilhem Bichot
In the testcase above, for the last INSERT, at runtime the REDO_INSERT_ROW_BLOBS has a page range [55,62] (8 pages) though the pagecache_*() calls of write_full_pages() rather cover [56,63].
[15 Jan 2009 15:19]
Guilhem Bichot
http://lists.mysql.com/maria/394
[15 Jan 2009 17:41]
Guilhem Bichot
queued to 5.1-maria
[17 Feb 2009 11:47]
Bugs System
Pushed into 6.0.10-alpha (revid:serg@mysql.com-20090217113558-vpsqsyjule7nz0gk) (version source revid:guilhem@mysql.com-20090213163054-rsg204z5qzcekbfe) (merge vers: 6.0.10-alpha) (pib:6)
[7 May 2009 8:29]
MC Brown
A note has been added to the 6.0.10 changelog: Recovery of Maria tables with BLOB columns could fail to complete correctly.