Kevin,
This is the reopened chill/thaw stress test bug.
I can easily reproduce an assert in Record::getEncodedValue() that
always occurs during a scavenge/record pruning (stack attached.)
At the time of the assert, the record state is 'recChilled', so that
explains why getEncodedValue() fails. It appears that the record 'oldie'
in Index::duplicateKey() gets chilled while it's being accessed.
Note that hasRecord() should have thawed the record. I added a second
thaw to verify this, but the breakpoint never hit, so I think the record
is being chilled during makeKey().
bool Index::duplicateKey(IndexKey *key, Record * record)
{
for (Record *oldie = record; oldie; oldie = oldie->getPriorVersion())
if (oldie->hasRecord()) <<<< will thaw record
{
IndexKey oldKey(this);
if (oldie->state == recChilled)
oldie->thaw(); <<<< breakpoint never hit
makeKey (oldie, &oldKey); <<<< assertion here--chill< during
makeKey??
if (oldKey.isEqual(key))
return true;
}
return false;
}