List:Falcon Storage Engine« Previous MessageNext Message »
From:Christopher Powers Date:January 16 2009 6:47am
Subject:Re: Bug#36631, "Assertion in SerialLogControl::nextRecord"
View as plain text  
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

Thread
Bug#36631, "Assertion in SerialLogControl::nextRecord"Christopher Powers16 Jan
  • Re: Bug#36631, "Assertion in SerialLogControl::nextRecord"Christopher Powers16 Jan
  • Re: Bug#36631, "Assertion in SerialLogControl::nextRecord"Olav Sandstaa16 Jan
    • Re: Bug#36631, "Assertion in SerialLogControl::nextRecord"Christopher Powers16 Jan