From: Kevin Lewis Date: November 13 2008 5:16am Subject: Question on Scavenging List-Archive: http://lists.mysql.com/falcon/181 Message-Id: <491BB826.4050909@sun.com> MIME-Version: 1.0 Content-Type: text/plain; format=flowed; charset=ISO-8859-1 Content-Transfer-Encoding: 7BIT Jim, I see what appears to be a possible problem in Table::expungeRecordVersions(). It seems like this is supposed to release a long string of old invisible record versions. The oldest visible record is sent into it and the priorRecord chain from there down is scavenged. It does this by detaching the priorRecord from the one sent in, doing garbage collection on that prior, and releasing its useCount. The useCount is always 1 due to the priorRecord pointer. So the release at the end of Table::expungeRecordVersions() causes it to be deleted. Its destructor will release all the priorRecords from there to the end of the chain. But where is the garbage collection done on each of these other prior records? If I am right that the garbage collection is never done, then index pages and blob records are left in the pages, filling up the tablespace. Kevin