Skip to main content

LmdbStorage

Struct LmdbStorage 

Source
pub struct LmdbStorage { /* private fields */ }
Expand description

Content-addressed LMDB storage.

Uses heed (LMDB wrapper) for memory-mapped, transactional chunk storage. Keys are 32-byte XorName addresses, values are raw chunk bytes.

Implementations§

Source§

impl LmdbStorage

Source

pub async fn new(config: LmdbStorageConfig) -> Result<Self>

Create a new LMDB storage instance.

Opens (or creates) an LMDB environment at {root_dir}/chunks.mdb/.

When config.max_map_size is 0 (the default) the map size is derived from the available disk space on the partition that hosts the database, minus config.disk_reserve. This allows a node to use all available storage without a fixed cap. If the operator adds more storage later the map is resized on demand (see Self::put).

§Errors

Returns an error if the LMDB environment cannot be opened.

Source

pub async fn put(&self, address: &XorName, content: &[u8]) -> Result<bool>

Store a chunk.

Before writing, verifies that available disk space exceeds the configured reserve. If the LMDB map is full but more disk space exists (e.g. the operator added storage), the map is resized automatically and the write is retried.

§Returns

Returns true if the chunk was newly stored, false if it already existed.

§Errors

Returns an error if the write fails, content doesn’t match address, or the disk is too full to accept new chunks.

Source

pub async fn get(&self, address: &XorName) -> Result<Option<Vec<u8>>>

Retrieve a chunk.

§Returns

Returns Some(content) if found, None if not found.

§Errors

Returns an error if read fails or verification fails.

Source

pub fn exists(&self, address: &XorName) -> Result<bool>

Check if a chunk exists.

§Errors

Returns an error if the LMDB read transaction fails.

Source

pub async fn delete(&self, address: &XorName) -> Result<bool>

Delete a chunk.

§Errors

Returns an error if deletion fails.

Source

pub fn stats(&self) -> StorageStats

Get storage statistics.

Source

pub fn current_chunks(&self) -> Result<u64>

Return the number of chunks currently stored, queried from LMDB metadata.

This is an O(1) read of the B-tree page header — not a full scan.

§Errors

Returns an error if the LMDB read transaction fails.

Source

pub fn compute_address(content: &[u8]) -> XorName

Compute content address (BLAKE3 hash).

Source

pub fn root_dir(&self) -> &Path

Get the root directory.

Source

pub async fn all_keys(&self) -> Result<Vec<XorName>>

Return all stored record keys.

Iterates the LMDB database in a read transaction. Used by the replication subsystem for hint construction and audit sampling.

§Errors

Returns an error if the LMDB read transaction fails.

Source

pub async fn get_raw(&self, address: &XorName) -> Result<Option<Vec<u8>>>

Retrieve raw chunk bytes without content-address verification.

Used by the audit subsystem to compute digests over stored bytes. Unlike Self::get, this does not verify hash(content) == address.

§Errors

Returns an error if the LMDB read transaction fails.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more