Dorian Taylor (Lists) wrote:
On Apr 9, 2020, at 10:33 AM, Howard Chu hyc@symas.com wrote:
There is no point in nesting a read-only txn. Nesting is used to allow work to be subdivided so that one set of writes can be rolled back independently of the rest of the txn. In a readonly txn there is never anything to rollback.
This is what I figured, albeit from what I can glean, the system doesn’t complain if you do. But then my only experience with LMDB is this one Ruby binding I inherited, and I am trying to reconcile how the previous author designed the transaction code to work with the behaviour I observe.
A language binding should be a transparent pipe. It should relay whatever parameters the caller supplied down to the underlying library, and return the results. It shouldn't try to guess at or impose any behaviors.
In this particular case, transaction nesting is already documented to only be supported for write txns, and an error will be returned for any attempt to use nesting with a read txn. The binding should allow the caller to try anything, and return the underlying error code when it fails.