Bug #39696 | Assertion in Table.cpp (dup->state == recDeleted) fails during falcon_chill_thaw | ||
---|---|---|---|
Submitted: | 27 Sep 2008 15:53 | Modified: | 13 Dec 2008 9:05 |
Reporter: | John Embretsen | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Server: Falcon storage engine | Severity: | S1 (Critical) |
Version: | 6.0-falcon-team (6.0.8a) | OS: | Windows (Version 6.0.6001, Visual Studio 2008) |
Assigned to: | Christopher Powers | CPU Architecture: | Any |
Tags: | F_CHILL THAW, pb2, pushbuild, test failure |
[27 Sep 2008 15:53]
John Embretsen
[27 Sep 2008 16:18]
John Embretsen
Attached full test log from failed test case.
Attachment: falcon_chill_thaw_log_win_bug39696.txt (text/plain), 85.98 KiB.
[24 Oct 2008 5:10]
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/56961 2880 Christopher Powers 2008-10-24 Bug#36631,"Assertion in SerialLogControl::nextRecord" Bug#38541,"Falcon RecordVersion::thaw assertion """"bytesRestored > 0 || data.record == NULL""" Bug#38567,"Falcon crash in Record::getEncodedRecord at Record.cpp:743" Bug#38569,"Falcon assertion in SRLUpdateIndex::thaw : type == srlUpdateIndex" Bug#39694,"Crash in StorageTable::setRecord during falcon_chill_thaw test" Bug#39695,"Crash in SRLUpdateRecords::thaw during falcon_chill_thaw test" Bug#39696,"Assertion in Table.cpp (dup->state == recDeleted) fails during falcon_chill_thaw" Fix 1 of 3 for chill/thaw bugs. Modified Record::hasRecord() to thaw if necessary, removed redundant record thaws, added exception handling
[24 Oct 2008 5: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/56962 2881 Christopher Powers 2008-10-24 Bug#36631,"Assertion in SerialLogControl::nextRecord" Bug#38541,"Falcon RecordVersion::thaw assertion """"bytesRestored > 0 || data.record == NULL""" Bug#38567,"Falcon crash in Record::getEncodedRecord at Record.cpp:743" Bug#38569,"Falcon assertion in SRLUpdateIndex::thaw : type == srlUpdateIndex" Bug#39694,"Crash in StorageTable::setRecord during falcon_chill_thaw test" Bug#39695,"Crash in SRLUpdateRecords::thaw during falcon_chill_thaw test" Bug#39696,"Assertion in Table.cpp (dup->state == recDeleted) fails during falcon_chill_thaw" Fix 2 of 3 for chill/thaw bugs. Synchronized record thaw operations using a pool of sync objects in the associated table. Record chill operations do not need to be synchronized because chills are performed in one place, and only by the active Transaction.
[26 Oct 2008 15:58]
Kevin Lewis
Two patches approved to problems with concurent thaws. 1) enhance hasRecord to thaw when needed. 2) serialize thaws with a hash table of SyncOjects.
[27 Oct 2008 18:29]
Christopher Powers
This is an example of a failed record thaw.
[28 Oct 2008 8:09]
Bugs System
Pushed into 6.0.8-alpha (revid:cpowers@mysql.com-20081024053538-6y1ma8lydl93oxza) (version source revid:alik@mysql.com-20081028074021-o49ijs3x4pxj1gbm) (pib:5)
[7 Nov 2008 1:12]
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/58131 2905 Christopher Powers 2008-11-06 Bug#39696, "Assertion in Table.cpp (dup->state == recDeleted) fails during falcon_chill_thaw" Fixed problems with savepoint rollbacks that prevented some chilled records from being committed.
[7 Nov 2008 2:41]
Kevin Lewis
Code looks good, OK to push
[9 Nov 2008 1:48]
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/58261 2906 Christopher Powers 2008-11-08 Bug#39696, "Assertion in Table.cpp (dup->state == recDeleted) fails during falcon_chill_thaw" The record chill operation sometimes generates SRLUpdateRecord entries in the serial log that have zero data length. This causes a corruption of the serial log. The total data length of the chilled records is known only after all of the records have been processed in SRLUpdateRecords::append(). If none of the record versions within a given savepoint are eligible to be chilled, the total data length of the serial log record will be zero. Even when there are zero bytes of data to commit to disk, SRLUpdateRecords::append() issues a serial log flush and forces the creation of a new serial log window. This creates a one-byte offset error in the serial log that ultimately results in a fatal assertion during gopher thread processing. To prevent this error, SRLUpdateRecords::append() now only flushes serial log records with a non-zero data length.
[20 Nov 2008 12:55]
Bugs System
Pushed into 6.0.9-alpha (revid:cpowers@mysql.com-20081109014458-kg3iluxnhcxkvosc) (version source revid:cpowers@mysql.com-20081109014458-kg3iluxnhcxkvosc) (pib:5)
[13 Dec 2008 9:05]
MC Brown
No documentation needed (internal change only)