Bug #40801 | Falcon garbage collection can erase valid key values | ||
---|---|---|---|
Submitted: | 17 Nov 2008 19:52 | Modified: | 15 May 2009 12:56 |
Reporter: | Kevin Lewis | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Server: Falcon storage engine | Severity: | S3 (Non-critical) |
Version: | 6.0.8 | OS: | Any |
Assigned to: | Kevin Lewis | CPU Architecture: | Any |
Tags: | DesignDoc, F_SCAVENGER |
[17 Nov 2008 19:52]
Kevin Lewis
[18 Nov 2008 14:07]
Kevin Lewis
Note that if you do this after the scavenge; # Client 1, 2 or any other new client; SELECT * FROM t3; SELECT * FROM t3 WHERE f1 = '-'; # This will fail to find any records So the index has been corrupted by this bad scavenge.
[2 Dec 2008 18:49]
Sveta Smirnova
Thank you for the report. Verified as described.
[7 Jan 2009 8: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/62571 2958 Kevin Lewis 2009-01-07 Bug#34893, Bug#36700, Bug#40342, Bug#40801 New scavenger code, See WL#4606, WL#4477 & WL#4478 for more info. This is the second full patch of the new scavenger. 1) Separate the two tasks involved in scavenging into A. Pruning old invisible record versions. 1. As part of this task, a survey is taken of records in age groups so that the next step can be done in one pass B. Retiring least-recently-used records from the record cache 2) Watch how much record space is added to the record cache and start a new age group at regular intervals. 3) Put the scavenger into a separate thread that can be signaled when needed. This patch contains many improvements over the last patch including; 1) forcedRecordScavenge is now signalScavenge and the loop is increased to 5 times attempting to get memory from the record cache. 2) Unused code is deleted 3) Integrated with new dependency manager code so that it now uses Transaction::commitId to determine if a record is old enough to be scavenged.
[9 Jan 2009 5:15]
Kevin Lewis
This still needs a test case
[21 Jan 2009 5:16]
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/63654 2969 Kevin Lewis 2009-01-20 Bug#40801 - Testcase to show that the new scavenger does not garbageCollect key values that are needed for records not pruned.
[23 Jan 2009 6:08]
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/63866 2972 Kevin Lewis 2009-01-23 Bug#40801 - Testcase to show that the new scavenger does not garbageCollect key values that are needed for records not pruned.
[13 Feb 2009 7:24]
Bugs System
Pushed into 6.0.10-alpha (revid:alik@sun.com-20090211182317-uagkyj01fk30p1f8) (version source revid:vvaintroub@mysql.com-20090123204400-cz3fg2xxkopmmf7g) (merge vers: 6.0.10-alpha) (pib:6)
[15 May 2009 12:56]
MC Brown
An entry has been added to the 6.0.10 changelog: The Falcon storage engine has been updated to incorporate new code for the built-in scavenger service, which handles the caching of records in memory. This fixes a number of different issues related to the visibility of different records during certain operations and improves the memory usage.