[Date Prev][Date Next]
[Chronological]
[Thread]
[Top]
Re: (ITS#8431) LMDB: Access newly opened database from another transaction
- To: openldap-its@OpenLDAP.org
- Subject: Re: (ITS#8431) LMDB: Access newly opened database from another transaction
- From: hyc@symas.com
- Date: Sat, 28 May 2016 09:19:05 +0000
- Auto-submitted: auto-generated (OpenLDAP-ITS)
juerg.bircher@gmail.com wrote:
> On 27/05/16 15:11, "Hallvard Breien Furuseth" <h.b.furuseth@usit.uio.no> wrote:
>
>> This works as intended. Each transaction is atomic, and shall see
>> neither DBIs nor data which were committed after the transaction began.
>> Cross-txn mdb_dbi_open() is in any case hairy to get right, we screwed
>> it up several times before arriving at the now-obvious semantics.
>>
>
> It is fine that newly opened database handles shall not be seen by
> other transactions as long the transaction runs.. But once the
> transaction which opened the handle is committed it should be valid
> for any other transaction.
It should be valid for any other transaction *that started after the opening
transaction committed.* This is the nature of transactions, they are fully
isolated from each other.
> This would greatly simplify lazy database
> opening of a multithreaded application.
Allowing existing transactions to use the DBIs would break transaction
isolation. That is a non-starter.
> The suggested patch does exactly implement that behaviour. I believe
> it does not break anything. Isolation must be guaranteed for the data
> but not necessarily for the database handles.
Wrong. A database handle essentially points to data. Exposing that data to a
transaction that was opened before that handle's transaction was committed
*does* break isolation. Violating the ACID guarantees of LMDB's transaction
system is Not allowed.
>
>> An application can open and cache its DBIs in a separate startup
>> transaction, then commit it and start new transactions.
>
> Yes this would be a simple approach to get around that problem. But I
> do not like it as with each opened database the overhead increases
> especially if not using my suggested improvements in ITS#8430.
You are saying you don't like ACID transactions. If that's the case, LMDB is
not for you.
--
-- Howard Chu
CTO, Symas Corp. http://www.symas.com
Director, Highland Sun http://highlandsun.com/hyc/
Chief Architect, OpenLDAP http://www.openldap.org/project/