Skip to main content

CellCache

Struct CellCache 

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

Local cell cache with LRU eviction policy.

The cache stores recently accessed cells from object storage in the local filesystem. When the cache exceeds its size limit, the least recently accessed entries are evicted.

§Thread Safety

The cache is designed for concurrent access from multiple bees. All operations use interior mutability via RwLock and atomic operations.

Implementations§

Source§

impl CellCache

Source

pub async fn new( cache_dir: PathBuf, max_size: u64, storage: Arc<dyn StorageBackend>, ) -> Result<Self>

Create a new CellCache with the specified directory and size limit.

§Arguments
  • cache_dir — Directory where cached cells will be stored.
  • max_size — Maximum total size of cached files in bytes.
  • storage — Storage backend for fetching cells on cache miss.
§Errors

Returns an error if the cache directory cannot be created.

Source

pub async fn get(&self, storage_key: &str) -> Result<PathBuf>

Get a cell from the cache or fetch it from storage on cache miss.

§Arguments
  • storage_key — The storage key for the cell (e.g., “cells/frame_id/cell_abc.parquet”).
§Returns

Returns the local filesystem path to the cached cell.

§Behavior
  • Cache hit: Updates last accessed time and returns the local path.
  • Cache miss: Fetches the cell from storage, adds it to the cache, and returns the path.
  • Automatically evicts LRU entries if the cache exceeds its size limit.
Source

pub fn size(&self) -> u64

Get the current size of the cache in bytes.

Source

pub async fn list_cached_cells(&self) -> HashMap<String, u64>

Get a list of all cached cells for heartbeat reporting.

Returns a map of storage keys to their sizes in bytes.

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