On Sat, May 28, 2016 at 11:18 AM, Howard Chu <[email protected]> wrote: > [email protected] wrote: >> >> On 27/05/16 15:11, "Hallvard Breien Furuseth" <[email protected]> >> 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.
Not at all ACID is a must and something I very much appreciate about LMDB! LMDB is definitely for me and I'm saying that after having spent nearly one intensive year with LMDB! So I like to thank you for the outstanding database. > > -- > -- Howard Chu > CTO, Symas Corp. http://www.symas.com > Director, Highland Sun http://highlandsun.com/hyc/ > Chief Architect, OpenLDAP http://www.openldap.org/project/
