https://bugs.openldap.org/show_bug.cgi?id=10127
Issue ID: 10127
Summary: Thread Safety in LMDB with MDB_NOTLS and Readonly
Cursors
Product: LMDB
Version: unspecified
Hardware: All
OS: All
Status: UNCONFIRMED
Keywords: needs_review
Severity: normal
Priority: ---
Component: liblmdb
Assignee: [email protected]
Reporter: [email protected]
Target Milestone: ---
Greetings LMDB Community,
I am delving into the thread-safety aspects of LMDB, specifically regarding the
use of readonly cursors across multiple threads. With the MDB_NOTLS flag
enabled, which disables thread-local storage, my understanding is that readonly
transactions may be shared between threads, provided there is proper
synchronization to prevent concurrent access.
Building upon this, I seek clarity on the following: Can multiple threads
safely access a single readonly cursor derived from such a synchronized
readonly transaction when MDB_NOTLS is enabled?
Upon reviewing the LMDB source code, I noticed that cursors are tied to
transactions (see mdb.c#L1335). This suggests that if threads can synchronously
share a transaction, they might also share a cursor associated with it for data
retrieval.
I recognize my analysis might be superficial, and I'm open to corrections. Your
insights on this matter would be greatly appreciated to enhance my
understanding of LMDB's concurrency mechanisms.
Thank you in advance for your assistance!
--
You are receiving this mail because:
You are on the CC list for the issue.