Chris,
This code continues to combine the record data and record objects
together into the same limit. But the scavenger needs to consider both
pools as well. Code like this needs to change.
if (recordDataPool->activeMemory < recordScavengeThreshold
Christopher Powers wrote:
> http://lists.mysql.com/commits/64967
>
> Description:
>
> Bug #32838 "Falcon; error 1296 : Got error 305 'record memory is
> exhausted'"
>
> Several factors contribute to the out of memory error. Many have
> been resolved
> in other bugs (see Bug#42424, Bug#42505, Bug#42510 for details).
>
> Record scavenger efficiency can be further improved by reducing
> record
> cache fragmentation.
>
> The size of Record and RecordVersion objects is always the same,
> but the
> size of record data can vary considerably. The record cache
> becomes more
> fragmented over time because it is interspersed with fixed-size
> Record and
> RecordVersion objects.
>
> Record and RecordVersion objects are now allocated from a memory pool
> separate from the record data. Both memory pools will be more
> homogeneous,
> less fragmented and easier to scavenge.
>