Bug #53812 | assert row/row0umod.c line 660 in txn rollback after crash recovery | ||
---|---|---|---|
Submitted: | 19 May 2010 15:41 | Modified: | 15 Dec 2010 0:45 |
Reporter: | Mikhail Izioumtchenko | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Server: InnoDB Plugin storage engine | Severity: | S2 (Serious) |
Version: | 1.0.9 | OS: | Any |
Assigned to: | Marko Mäkelä | CPU Architecture: | Any |
[19 May 2010 15:41]
Mikhail Izioumtchenko
[1 Jun 2010 7:52]
Marko Mäkelä
This condition can occur when updating a PRIMARY KEY column of a ROW_FORMAT=DYNAMIC or ROW_FORMAT=COMPRESSED table when there is a secondary index defined on a column prefix of an externally stored column. In row_upd_clust_rec_by_insert(), it would be as follows: The first mini-transaction delete-marks the old record and writes the undo log entry. Subsequent mini-transaction(s) insert the new record, but leave the pointers to externally stored columns zero. Each page of externally stored column will be written by a separate mini-transaction. If the server crashes before all externally stored columns are written, the rollback of incomplete transactions will fail to fetch the externally stored column prefix. We must ignore this failure during the rollback of incomplete transactions, but not during a normal transaction rollback.
[1 Jun 2010 10:38]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/109692
[1 Jun 2010 10:38]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/109693
[1 Jun 2010 10:42]
Marko Mäkelä
Workaround: if you must define column prefix indexes, use a different InnoDB ROW_FORMAT format than DYNAMIC or COMPRESSED.
[1 Jun 2010 11:11]
Jimmy Yang
Fix looks fine for the scenario described. Ok to Push.
[1 Jun 2010 11:17]
Marko Mäkelä
For what it is worth, I tried to reproduce this by crashing the server with an assertion: === modified file 'storage/innodb_plugin/row/row0upd.c' --- storage/innodb_plugin/row/row0upd.c revid:marko.makela@oracle.com-20100601103738-upm8awahesmeh9dr +++ storage/innodb_plugin/row/row0upd.c 2010-06-01 10:59:28 +0000 @@ -1650,6 +1650,8 @@ row_upd_clust_rec_by_insert( btr_cur_mark_dtuple_inherited_extern(entry, node->update); } + ut_a(ut_rnd_gen_ulint() & 7); + err = row_ins_index_entry(index, entry, node->upd_ext ? node->upd_ext->n_ext : 0, TRUE, thr); but my test failed to trigger that statement. I guess my test scripts did not update the primary key frequently enough.
[1 Jun 2010 12:06]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/109718
[1 Jun 2010 12:06]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/109719
[19 Jul 2010 14:35]
Bugs System
Pushed into 5.1.49 (revid:build@mysql.com-20100719143034-omcma40sblwmay3x) (version source revid:vasil.dimov@oracle.com-20100704071244-3lo4okzels3kvy1p) (merge vers: 5.1.49) (pib:16)
[20 Jul 2010 19:02]
John Russell
Since this was an internally-generated bug during testing, it won't go in the change log.
[23 Jul 2010 12:22]
Bugs System
Pushed into mysql-trunk 5.5.6-m3 (revid:alik@sun.com-20100723121820-jryu2fuw3pc53q9w) (version source revid:alik@sun.com-20100723121820-jryu2fuw3pc53q9w) (merge vers: 5.5.6-m3) (pib:18)
[23 Jul 2010 12:29]
Bugs System
Pushed into mysql-next-mr (revid:alik@sun.com-20100723121929-90e9zemk3jkr2ocy) (version source revid:alik@sun.com-20100723121827-3bsh51m5sj6g4oma) (pib:18)
[14 Oct 2010 8:27]
Bugs System
Pushed into mysql-5.1-telco-7.0 5.1.51-ndb-7.0.20 (revid:martin.skold@mysql.com-20101014082627-jrmy9xbfbtrebw3c) (version source revid:martin.skold@mysql.com-20101014082627-jrmy9xbfbtrebw3c) (merge vers: 5.1.51-ndb-7.0.20) (pib:21)
[14 Oct 2010 8:42]
Bugs System
Pushed into mysql-5.1-telco-6.3 5.1.51-ndb-6.3.39 (revid:martin.skold@mysql.com-20101014083757-5qo48b86d69zjvzj) (version source revid:martin.skold@mysql.com-20101014083757-5qo48b86d69zjvzj) (merge vers: 5.1.51-ndb-6.3.39) (pib:21)
[14 Oct 2010 8:56]
Bugs System
Pushed into mysql-5.1-telco-6.2 5.1.51-ndb-6.2.19 (revid:martin.skold@mysql.com-20101014084420-y54ecj85j5we27oa) (version source revid:martin.skold@mysql.com-20101014084420-y54ecj85j5we27oa) (merge vers: 5.1.51-ndb-6.2.19) (pib:21)