[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openldap-devel
Subject:    Re: LMDB stuff
From:       Howard Chu <hyc () symas ! com>
Date:       2014-02-04 7:13:03
Message-ID: 52F092FF.7080805 () symas ! com
[Download RAW message or body]

Hallvard Breien Furuseth wrote:
> On 2014-02-03 22:14, Howard Chu wrote:
>> Was chatting with Emmanuel Lecharny (who is currently working on
>> Mavibot for ApacheDS, an MVCC backend similar to LMDB) and had an
>> interesting realization: we can avoid the current issue of long-lived
>> reader txns preventing page reclamation.
>>
>> (...) since we're already going to add a txnID to every page's
>> page header, we can simply add a 2nd txnID, recording the txnID of the
>> previous change to this page's ancestor. Then, any page where this
>> prevTxnID is >= the outstanding reader's txnID can be reclaimed.
>
> Nice.  But: Seems to me the freelist needs to know when the page
> was written, and when it was freed.  A reader older than the txn
> which wrote the current contents of a page, is irrelevant to
> whether the page can be overwritten.  How do ancestors matter? (Do
> you mean a branch page? The age of the previous page contents?)

I meant the age of the previous page contents.

>> Still thinking about the actual implementation of this, it may make
>> more sense to store the prevTxnID in the freeDB than in each page
>> header. Ideally we want to be able to grab a chunk of pageIDs
>> unambiguously, instead of having to iterate thru each page and read
>> its header to determine if it's safe.
>
> Yes, re-reading lots of pages just to find they can't be used does
> not sound fun.  And we can't look for page headers in a broken-up
> overflow page.  Unless we either quit breaking up freed ovpages,
> or write a page header to the unused chunk when breaking it up.
>
> Can we grab Mavibot's freeDB structure?

Currently we're just using an array of pageIDs, we can turn that into an array 
of <pageID,prevTxnID> pairs instead.

-- 
   -- Howard Chu
   CTO, Symas Corp.           http://www.symas.com
   Director, Highland Sun     http://highlandsun.com/hyc/
   Chief Architect, OpenLDAP  http://www.openldap.org/project/

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic