pub trait StorageTxn<T> {
// Required methods
fn get_collection_metadata(&self) -> BTreeMap<GlobalId, ShardId>;
fn insert_collection_metadata(
&mut self,
s: BTreeMap<GlobalId, ShardId>,
) -> Result<(), StorageError<T>>;
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<T>>;
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<T>>;
}
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§
Sourcefn get_collection_metadata(&self) -> BTreeMap<GlobalId, ShardId>
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.
Sourcefn insert_collection_metadata(
&mut self,
s: BTreeMap<GlobalId, ShardId>,
) -> Result<(), StorageError<T>>
fn insert_collection_metadata( &mut self, s: BTreeMap<GlobalId, ShardId>, ) -> Result<(), StorageError<T>>
Add new storage metadata for a collection.
Subsequent calls to StorageTxn::get_collection_metadata
must include
this data.
Sourcefn delete_collection_metadata(
&mut self,
ids: BTreeSet<GlobalId>,
) -> Vec<(GlobalId, ShardId)>
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.
Sourcefn get_unfinalized_shards(&self) -> BTreeSet<ShardId>
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.
Sourcefn insert_unfinalized_shards(
&mut self,
s: BTreeSet<ShardId>,
) -> Result<(), StorageError<T>>
fn insert_unfinalized_shards( &mut self, s: BTreeSet<ShardId>, ) -> Result<(), StorageError<T>>
Insert the specified values as unfinalized shards.
Sourcefn mark_shards_as_finalized(&mut self, shards: BTreeSet<ShardId>)
fn mark_shards_as_finalized(&mut self, shards: BTreeSet<ShardId>)
Mark the specified shards as finalized, deleting them from the unfinalized shard collection.
Sourcefn get_txn_wal_shard(&self) -> Option<ShardId>
fn get_txn_wal_shard(&self) -> Option<ShardId>
Get the txn WAL shard for this environment if it exists.
Sourcefn write_txn_wal_shard(&mut self, shard: ShardId) -> Result<(), StorageError<T>>
fn write_txn_wal_shard(&mut self, shard: ShardId) -> Result<(), StorageError<T>>
Store the specified shard as the environment’s txn WAL shard.
The implementor should error if the shard is already specified.