Sam Dave wrote:
Alternatively, could a more stateful API be provided (as an alternative to API relying on TLS)?
Roughly what I have in mind is, mdb_txn_create() returns a state pointer, which should be passed into the next mdb_put(), which returns a state pointer, which should be passed into the next mdb_put(), and so on, until the final state is passed into mdb_commit() or mdb_abort().
A txn pointer is a state pointer.
Jun 7, 2023, 10:26 by samdave@tuta.io:
Thanks, I was just hoping abort was a (currently undocumented) exception to this :) Would it be possible/feasible in the future to bring MDB_NOTLS support to read-write transactions? (or at least some partial NOTLS support for only e.g. abort)
Read-write txns don't use TLS. TLS is only used for read-only txns.
Motivation: Ability to abort "later" (e.g. at garbage collection in some languages).. as this "later" stuff does not necessarily happen on the original thread. - Samuel Jun 6, 2023, 18:44 by hyc@symas.com: Sam Dave wrote: Hi, The documentation for mdb_txn_begin() says "A transaction and its cursors must only be used by a single thread, and a thread may only have a single transaction at a time.". Does this also hold for mdb_txn_abort() for read-write transactions? I.e. does the abort also have to happen on the same OS thread as all the previous things (begin, put, etc.)? Calling mdb_txn_abort() requires passing the txn as a parameter, which looks pretty suspiciously to me like "using" it. Is this really a serious question? -- -- Howard Chu CTO, Symas Corp. http://www.symas.com Director, Highland Sun http://highlandsun.com/hyc/ Chief Architect, OpenLDAP http://www.openldap.org/project/