pub struct RoTxn<'e, T = AnyTls> { /* private fields */ }Expand description
A read-only transaction.
§LMDB Limitations
It’s a must to keep read transactions short-lived.
Active Read transactions prevent the reuse of pages freed by newer write transactions, thus the database can grow quickly.
§OSX/Darwin Limitation
At least 10 transactions can be active at the same time in the same process, since only 10 POSIX semaphores can be active at the same time for a process. Threads are in the same process space.
If the process crashes in the POSIX semaphore locking section of the transaction, the semaphore will be kept locked.
Note: if your program already use POSIX semaphores, you will have less available for heed/LMDB!
You may increase the limit by editing it at your own risk: /Library/LaunchDaemons/sysctl.plist
§This struct is covariant
#[allow(dead_code)]
trait CovariantMarker<'a>: 'static {
type R: 'a;
fn is_covariant(&'a self) -> &'a Self::R;
}
impl<'a, T> CovariantMarker<'a> for heed::RoTxn<'static, T> {
type R = heed::RoTxn<'a, T>;
fn is_covariant(&'a self) -> &'a heed::RoTxn<'a, T> {
self
}
}Implementations§
Source§impl<'e, T> RoTxn<'e, T>
impl<'e, T> RoTxn<'e, T>
Sourcepub fn id(&self) -> usize
pub fn id(&self) -> usize
Return the transaction’s ID.
This returns the identifier associated with this transaction. For a
RoTxn, this corresponds to the snapshot being read;
concurrent readers will frequently have the same transaction ID.
Sourcepub fn commit(self) -> Result<()>
pub fn commit(self) -> Result<()>
Commit a read transaction.
Synchronizing some Env metadata with the global handle.
§LMDB
It’s mandatory in a multi-process setup to call RoTxn::commit upon read-only database opening.
After the transaction opening, the database is dropped. The next transaction might return
Io(Os { code: 22, kind: InvalidInput, message: "Invalid argument" }) known as EINVAL.
Trait Implementations§
Source§impl<'a> Deref for RoTxn<'a, WithoutTls>
impl<'a> Deref for RoTxn<'a, WithoutTls>
impl Send for RoTxn<'_, WithoutTls>
Is sendable only if MDB_NOTLS has been used to open this transaction.