pub trait SnapshotStore:
Send
+ Sync
+ Debug {
// Required methods
fn upload<'a>(
&'a self,
key: SnapshotKey,
bytes: Vec<u8>,
) -> SnapshotStoreFuture<'a, SnapshotLocation>;
fn download<'a>(
&'a self,
location: &'a SnapshotLocation,
) -> SnapshotStoreFuture<'a, Vec<u8>>;
fn delete<'a>(
&'a self,
location: &'a SnapshotLocation,
) -> SnapshotStoreFuture<'a, ()>;
// Provided methods
fn health_check(&self) -> SnapshotStoreFuture<'_, ()> { ... }
fn verify_uploaded<'a>(
&'a self,
_location: &'a SnapshotLocation,
) -> SnapshotStoreFuture<'a, ()> { ... }
}Required Methods§
Sourcefn upload<'a>(
&'a self,
key: SnapshotKey,
bytes: Vec<u8>,
) -> SnapshotStoreFuture<'a, SnapshotLocation>
fn upload<'a>( &'a self, key: SnapshotKey, bytes: Vec<u8>, ) -> SnapshotStoreFuture<'a, SnapshotLocation>
Persist a snapshot blob and return its location. Stores own naming and
MAY ignore parts of key (Inline does).
Sourcefn download<'a>(
&'a self,
location: &'a SnapshotLocation,
) -> SnapshotStoreFuture<'a, Vec<u8>>
fn download<'a>( &'a self, location: &'a SnapshotLocation, ) -> SnapshotStoreFuture<'a, Vec<u8>>
Retrieve a snapshot blob given its location.
Sourcefn delete<'a>(
&'a self,
location: &'a SnapshotLocation,
) -> SnapshotStoreFuture<'a, ()>
fn delete<'a>( &'a self, location: &'a SnapshotLocation, ) -> SnapshotStoreFuture<'a, ()>
Best-effort delete; missing is not an error.
Provided Methods§
Sourcefn health_check(&self) -> SnapshotStoreFuture<'_, ()>
fn health_check(&self) -> SnapshotStoreFuture<'_, ()>
Lightweight liveness probe for the backend, used by the snapshot driver
to detect local S3 loss WITHOUT triggering a build_snapshot (whose
failure openraft treats as fatal). The default is “always healthy”:
in-memory and local-filesystem backends cannot be remotely unavailable.
The S3 backend overrides this with a cheap stat.
Sourcefn verify_uploaded<'a>(
&'a self,
_location: &'a SnapshotLocation,
) -> SnapshotStoreFuture<'a, ()>
fn verify_uploaded<'a>( &'a self, _location: &'a SnapshotLocation, ) -> SnapshotStoreFuture<'a, ()>
Verify that a freshly-uploaded snapshot is actually retrievable from
the backend. Called immediately after upload returns Ok, before the
new pointer is published. Catches silent partial-success modes
(multipart upload Init/Part Ok but Complete failed, opendal retry
returning Ok on cached state, etc.) that would otherwise leave
current_snapshot pointing at a 404. Default no-op for backends that
can’t lie about persistence (Inline keeps bytes in the pointer; Local
uses a single fs syscall whose Ok means present). The S3 backend
overrides this with a stat round-trip.
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".