Skip to main content

StorageTxn

Trait StorageTxn 

Source
pub trait StorageTxn {
    // Required methods
    fn get_collection_metadata(&self) -> BTreeMap<GlobalId, ShardId>;
    fn insert_collection_metadata(
        &mut self,
        s: BTreeMap<GlobalId, ShardId>,
    ) -> Result<(), StorageError>;
    fn delete_collection_metadata(
        &mut self,
        ids: BTreeSet<GlobalId>,
    ) -> Vec<(GlobalId, ShardId)>;
    fn get_unfinalized_shards(&self) -> BTreeSet<ShardId>;
    fn insert_unfinalized_shards(
        &mut self,
        s: BTreeSet<ShardId>,
    ) -> Result<(), StorageError>;
    fn mark_shards_as_finalized(&mut self, shards: BTreeSet<ShardId>);
    fn get_txn_wal_shard(&self) -> Option<ShardId>;
    fn write_txn_wal_shard(
        &mut self,
        shard: ShardId,
    ) -> Result<(), StorageError>;
}
Expand description

Provides an interface for the storage controller to read and write data that is recorded elsewhere.

Data written to the implementor of this trait should make a consistent view of the data available through StorageMetadata.

Required Methods§

Source

fn get_collection_metadata(&self) -> BTreeMap<GlobalId, ShardId>

Retrieve all of the visible storage metadata.

The value of this map should be treated as opaque.

Source

fn insert_collection_metadata( &mut self, s: BTreeMap<GlobalId, ShardId>, ) -> Result<(), StorageError>

Add new storage metadata for a collection.

Subsequent calls to StorageTxn::get_collection_metadata must include this data.

Source

fn delete_collection_metadata( &mut self, ids: BTreeSet<GlobalId>, ) -> Vec<(GlobalId, ShardId)>

Remove the metadata associated with the identified collections.

Subsequent calls to StorageTxn::get_collection_metadata must not include these keys.

Source

fn get_unfinalized_shards(&self) -> BTreeSet<ShardId>

Retrieve all of the shards that are no longer in use by an active collection but are yet to be finalized.

Source

fn insert_unfinalized_shards( &mut self, s: BTreeSet<ShardId>, ) -> Result<(), StorageError>

Insert the specified values as unfinalized shards.

Source

fn mark_shards_as_finalized(&mut self, shards: BTreeSet<ShardId>)

Mark the specified shards as finalized, deleting them from the unfinalized shard collection.

Source

fn get_txn_wal_shard(&self) -> Option<ShardId>

Get the txn WAL shard for this environment if it exists.

Source

fn write_txn_wal_shard(&mut self, shard: ShardId) -> Result<(), StorageError>

Store the specified shard as the environment’s txn WAL shard.

The implementor should error if the shard is already specified.

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§