> 13.05.2014 14:33, Vlad Khorsun wrote:
>>   Your code will leave record with broken backversion pointer in case of
>> failure while garbage_collect is running. To avoid this, we need to zero 
>> backpointer before
>> garbage_collect. It also have risk to create orphan backversions but it is 
>> not a big problem.
>> Also, it require to fetch page with primary version second time and finally 
>> delete that primary
>> version. It could create some performance penalty.
> 
>   You are tight, but this performance penalty won't be bigger than in 
> VIO_backout() case 
> with DPM_backout_mark() call.

    Probably. What do you want to show here ?

>   BTW, isn't call of DPM_backout_mark() there unnecessary in case when there 
> is no 
> backversions?

    I consider it as necessary by the reasons i already wrote at tracker:

a) marking record with current transaction number prevents concurrent backouts 
b) marking record with rpb_gc_active flag allow readers to skip this record 
version and read 
  previous one (which will be primary record version after backout completes) 

Regards,
Vlad

------------------------------------------------------------------------------
"Accelerate Dev Cycles with Automated Cross-Browser Testing - For FREE
Instantly run your Selenium tests across 300+ browser/OS combos.
Get unparalleled scalability from the best Selenium testing platform available
Simple to use. Nothing to install. Get started now for free."
http://p.sf.net/sfu/SauceLabs
Firebird-Devel mailing list, web interface at 
https://lists.sourceforge.net/lists/listinfo/firebird-devel

Reply via email to