pub struct FastMemoryStore {
inner: RwLock<StoreInner>,
}Expand description
High-performance in-memory JMT store optimized for write throughput.
Differences from MockTreeStore:
- Uses
std::collections::HashMap(no parking_lot overhead) - Single RwLock instead of separate locks per collection
- Tracks node count for metrics
- Correct delete semantics via tombstones (not entry removal)
- No debug assertions in hot path
Fields§
§inner: RwLock<StoreInner>Implementations§
Source§impl FastMemoryStore
impl FastMemoryStore
pub fn write_tree_update_batch(&self, batch: TreeUpdateBatch) -> Result<()>
Sourcepub fn prune_stale_nodes(&self, up_to_version: Version) -> usize
pub fn prune_stale_nodes(&self, up_to_version: Version) -> usize
Prune stale nodes up to the given version.
Trait Implementations§
Source§impl Default for FastMemoryStore
impl Default for FastMemoryStore
Source§impl TreeReader for FastMemoryStore
impl TreeReader for FastMemoryStore
Source§fn get_node_option(&self, node_key: &NodeKey) -> Result<Option<Node>>
fn get_node_option(&self, node_key: &NodeKey) -> Result<Option<Node>>
Gets node given a node key. Returns
None if the node does not exist.Source§fn get_value_option(
&self,
max_version: Version,
key_hash: KeyHash,
) -> Result<Option<OwnedValue>>
fn get_value_option( &self, max_version: Version, key_hash: KeyHash, ) -> Result<Option<OwnedValue>>
Gets a value by identifier, returning the newest value whose version is less than or
equal to the specified version. Returns None if the value does not exist.
Source§fn get_rightmost_leaf(&self) -> Result<Option<(NodeKey, LeafNode)>>
fn get_rightmost_leaf(&self) -> Result<Option<(NodeKey, LeafNode)>>
Gets the rightmost leaf. Note that this assumes we are in the process of restoring the tree
and all nodes are at the same version.
Source§impl TreeWriter for FastMemoryStore
impl TreeWriter for FastMemoryStore
Source§fn write_node_batch(&self, node_batch: &NodeBatch) -> Result<()>
fn write_node_batch(&self, node_batch: &NodeBatch) -> Result<()>
Writes a node batch into storage.
Auto Trait Implementations§
impl !Freeze for FastMemoryStore
impl RefUnwindSafe for FastMemoryStore
impl Send for FastMemoryStore
impl Sync for FastMemoryStore
impl Unpin for FastMemoryStore
impl UnsafeUnpin for FastMemoryStore
impl UnwindSafe for FastMemoryStore
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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