Christopher Powers wrote:
> 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;
> }
>
24 raise() 0x00002b7ab389ae4b
23 Error::debugBreak() ./storage/falcon/Error.cpp:94
22 Error::error() ./storage/falcon/Error.cpp:71
21 Error::assertionFailed() ./storage/falcon/Error.cpp:78
20 Record::getEncodedValue() ./storage/falcon/Record.cpp:668
19 Record::getRawValue() ./storage/falcon/Record.cpp:370
18 Record::getValue() ./storage/falcon/Record.cpp:322
17 Index::makeKey() ./storage/falcon/Index.cpp:607
16 Index::duplicateKey() ./storage/falcon/Index.cpp:673
15 Index::garbageCollect() ./storage/falcon/Index.cpp:627
14 Table::garbageCollect() ./storage/falcon/Table.cpp:2134
13 RecordLeaf::pruneRecords() ./storage/falcon/RecordLeaf.cpp:159
12 RecordGroup::pruneRecords() ./storage/falcon/RecordGroup.cpp:122
11 Table::pruneRecords() ./storage/falcon/Table.cpp:1898
10 Database::pruneRecords() ./storage/falcon/Database.cpp:1848
9 Database::scavengeRecords() ./storage/falcon/Database.cpp:1798
8 Database::scavenge() ./storage/falcon/Database.cpp:1759
7 Database::scavengerThreadMain() ./storage/falcon/Database.cpp:1923
6 Database::scavengerThreadMain() ./storage/falcon/Database.cpp:1912
5 Thread::thread() ./storage/falcon/Thread.cpp:167
4 Thread::thread() ./storage/falcon/Thread.cpp:146