Struct persist::indexed::cache::BlobCache[][src]

pub struct BlobCache<B> {
    build_version: Version,
    metrics: Arc<Metrics>,
    blob: Arc<Mutex<B>>,
    async_runtime: Arc<AsyncRuntime>,
    cache: BlobCacheInner,
    prev_meta_len: u64,
}
Expand description

A disk-backed cache for objects in Blob storage.

The data for the objects in the cache is stored on disk, mmap’d, and a validated handle is stored in-memory to avoid repeatedly decoding it.

TODO: Add a limit to bound how much disk this cache can use. The Arc return type for get_batch seems correct, but means that a bad user could starve the cache by indefinitely holding handles. The Arcs could be made into weak references so the cache could forcefully reclaim the backing data, but this is going to make performance of using the cached batches unpredictable. I think we probably want a soft limit and a hard limit where the soft limit does some alerting and the hard limit starts blocking (or erroring) until disk space frees up.

Fields

build_version: Versionmetrics: Arc<Metrics>blob: Arc<Mutex<B>>async_runtime: Arc<AsyncRuntime>cache: BlobCacheInnerprev_meta_len: u64

Implementations

Returns a new, empty cache for the given Blob storage.

Synchronously closes the cache, releasing exclusive-writer locks and causing all future commands to error.

This method is idempotent. Returns true if the blob had not previously been closed.

Synchronously fetches the batch for the given key.

Asynchronously returns the batch for the given key, fetching in another thread if it’s not already in the cache.

Synchronously fetches the batch for the given key.

Asynchronously returns the batch for the given key, fetching in another thread if it’s not already in the cache.

Fetches metadata about what batches are in Blob storage.

Returns the list of keys known to the underlying Blob.

Writes a batch to backing Blob storage.

Returns the size of the encoded blob value in bytes.

Removes a batch from both Blob storage and the local cache.

Writes a batch to backing Blob storage.

Returns the size of the encoded blob value in bytes.

Removes a batch from both Blob storage and the local cache.

Overwrites metadata about what batches are in Blob storage.

Trait Implementations

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

Formats the value using the given formatter. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

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

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

Performs the conversion.

Upcasts this ProgressEventTimestamp to Any. Read more

Returns the name of the concrete type of this object. Read more

Should always be Self

The resulting type after obtaining ownership.

Creates owned data from borrowed data, usually by cloning. Read more

🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.

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

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