pub struct CheckpointStore { /* private fields */ }
Implementations§
Source§impl CheckpointStore
impl CheckpointStore
pub fn new(path: &Path) -> Arc<Self>
pub fn new_for_tests() -> Arc<Self>
pub fn new_for_db_checkpoint_handler(path: &Path) -> Arc<Self>
pub fn open_readonly(path: &Path) -> CheckpointStoreTablesReadOnly
pub fn insert_genesis_checkpoint( &self, checkpoint: VerifiedCheckpoint, contents: CheckpointContents, epoch_store: &AuthorityPerEpochStore, )
pub fn get_checkpoint_by_digest( &self, digest: &CheckpointDigest, ) -> Result<Option<VerifiedCheckpoint>, TypedStoreError>
pub fn get_checkpoint_by_sequence_number( &self, sequence_number: CheckpointSequenceNumber, ) -> Result<Option<VerifiedCheckpoint>, TypedStoreError>
pub fn get_locally_computed_checkpoint( &self, sequence_number: CheckpointSequenceNumber, ) -> Result<Option<CheckpointSummary>, TypedStoreError>
pub fn multi_get_locally_computed_checkpoints( &self, sequence_numbers: &[CheckpointSequenceNumber], ) -> Result<Vec<Option<CheckpointSummary>>, TypedStoreError>
pub fn get_sequence_number_by_contents_digest( &self, digest: &CheckpointContentsDigest, ) -> Result<Option<CheckpointSequenceNumber>, TypedStoreError>
pub fn delete_contents_digest_sequence_number_mapping( &self, digest: &CheckpointContentsDigest, ) -> Result<(), TypedStoreError>
pub fn get_latest_certified_checkpoint( &self, ) -> Result<Option<VerifiedCheckpoint>, TypedStoreError>
pub fn get_latest_locally_computed_checkpoint( &self, ) -> Result<Option<CheckpointSummary>, TypedStoreError>
pub fn multi_get_checkpoint_by_sequence_number( &self, sequence_numbers: &[CheckpointSequenceNumber], ) -> Result<Vec<Option<VerifiedCheckpoint>>, TypedStoreError>
pub fn multi_get_checkpoint_content( &self, contents_digest: &[CheckpointContentsDigest], ) -> Result<Vec<Option<CheckpointContents>>, TypedStoreError>
pub fn get_highest_verified_checkpoint( &self, ) -> Result<Option<VerifiedCheckpoint>, TypedStoreError>
pub fn get_highest_synced_checkpoint( &self, ) -> Result<Option<VerifiedCheckpoint>, TypedStoreError>
pub fn get_highest_synced_checkpoint_seq_number( &self, ) -> Result<Option<CheckpointSequenceNumber>, TypedStoreError>
pub fn get_highest_executed_checkpoint_seq_number( &self, ) -> Result<Option<CheckpointSequenceNumber>, TypedStoreError>
pub fn get_highest_executed_checkpoint( &self, ) -> Result<Option<VerifiedCheckpoint>, TypedStoreError>
pub fn get_highest_pruned_checkpoint_seq_number( &self, ) -> Result<Option<CheckpointSequenceNumber>, TypedStoreError>
pub fn get_checkpoint_contents( &self, digest: &CheckpointContentsDigest, ) -> Result<Option<CheckpointContents>, TypedStoreError>
pub fn get_full_checkpoint_contents_by_sequence_number( &self, seq: CheckpointSequenceNumber, ) -> Result<Option<FullCheckpointContents>, TypedStoreError>
pub fn insert_certified_checkpoint( &self, checkpoint: &VerifiedCheckpoint, ) -> Result<(), TypedStoreError>
pub fn insert_verified_checkpoint( &self, checkpoint: &VerifiedCheckpoint, ) -> Result<(), TypedStoreError>
pub fn update_highest_verified_checkpoint( &self, checkpoint: &VerifiedCheckpoint, ) -> Result<(), TypedStoreError>
pub fn update_highest_synced_checkpoint( &self, checkpoint: &VerifiedCheckpoint, ) -> Result<(), TypedStoreError>
pub async fn notify_read_synced_checkpoint( &self, seq: CheckpointSequenceNumber, ) -> VerifiedCheckpoint
pub async fn notify_read_executed_checkpoint( &self, seq: CheckpointSequenceNumber, ) -> VerifiedCheckpoint
pub fn update_highest_executed_checkpoint( &self, checkpoint: &VerifiedCheckpoint, ) -> Result<(), TypedStoreError>
pub fn update_highest_pruned_checkpoint( &self, checkpoint: &VerifiedCheckpoint, ) -> Result<(), TypedStoreError>
Sourcepub fn set_highest_executed_checkpoint_subtle(
&self,
checkpoint: &VerifiedCheckpoint,
) -> Result<(), TypedStoreError>
pub fn set_highest_executed_checkpoint_subtle( &self, checkpoint: &VerifiedCheckpoint, ) -> Result<(), TypedStoreError>
Sets highest executed checkpoint to any value.
WARNING: This method is very subtle and can corrupt the database if used incorrectly. It should only be used in one-off cases or tests after fully understanding the risk.
pub fn insert_checkpoint_contents( &self, contents: CheckpointContents, ) -> Result<(), TypedStoreError>
pub fn insert_verified_checkpoint_contents( &self, checkpoint: &VerifiedCheckpoint, full_contents: VerifiedCheckpointContents, ) -> Result<(), TypedStoreError>
pub fn delete_full_checkpoint_contents( &self, seq: CheckpointSequenceNumber, ) -> Result<(), TypedStoreError>
pub fn get_epoch_last_checkpoint( &self, epoch_id: EpochId, ) -> SuiResult<Option<VerifiedCheckpoint>>
pub fn get_epoch_last_checkpoint_seq_number( &self, epoch_id: EpochId, ) -> SuiResult<Option<CheckpointSequenceNumber>>
pub fn insert_epoch_last_checkpoint( &self, epoch_id: EpochId, checkpoint: &VerifiedCheckpoint, ) -> SuiResult
pub fn get_epoch_state_commitments( &self, epoch: EpochId, ) -> SuiResult<Option<Vec<CheckpointCommitment>>>
Sourcepub fn get_epoch_stats(
&self,
epoch: EpochId,
last_checkpoint: &CheckpointSummary,
) -> Option<EpochStats>
pub fn get_epoch_stats( &self, epoch: EpochId, last_checkpoint: &CheckpointSummary, ) -> Option<EpochStats>
Given the epoch ID, and the last checkpoint of the epoch, derive a few statistics of the epoch.
pub fn checkpoint_db(&self, path: &Path) -> SuiResult
pub fn delete_highest_executed_checkpoint_test_only( &self, ) -> Result<(), TypedStoreError>
pub fn reset_db_for_execution_since_genesis(&self) -> SuiResult
Sourcepub async fn reexecute_local_checkpoints(
&self,
state: &AuthorityState,
epoch_store: &AuthorityPerEpochStore,
)
pub async fn reexecute_local_checkpoints( &self, state: &AuthorityState, epoch_store: &AuthorityPerEpochStore, )
TODO: this is only needed while upgrading from non-dataquarantine to dataquarantine. After that it can be deleted.
Re-executes all transactions from all local, uncertified checkpoints for crash recovery. All transactions thus re-executed are guaranteed to not have any missing dependencies, because we start from the highest executed checkpoint, and proceed through checkpoints in order.
Auto Trait Implementations§
impl !Freeze for CheckpointStore
impl !RefUnwindSafe for CheckpointStore
impl Send for CheckpointStore
impl Sync for CheckpointStore
impl Unpin for CheckpointStore
impl !UnwindSafe for CheckpointStore
Blanket Implementations§
§impl<T> AnySync for T
impl<T> AnySync for T
§impl<U> As for U
impl<U> As for U
§fn as_<T>(self) -> Twhere
T: CastFrom<U>,
fn as_<T>(self) -> Twhere
T: CastFrom<U>,
Casts
self
to type T
. The semantics of numeric casting with the as
operator are followed, so <T as As>::as_::<U>
can be used in the same way as T as U
for numeric conversions. Read more§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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> Conv for T
impl<T> Conv for T
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
Causes
self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes
self
to use its Display
implementation when
Debug
-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
Causes
self
to use its LowerExp
implementation when
Debug
-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
Causes
self
to use its LowerHex
implementation when
Debug
-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
Causes
self
to use its Octal
implementation when Debug
-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
Causes
self
to use its Pointer
implementation when
Debug
-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
Causes
self
to use its UpperExp
implementation when
Debug
-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
Causes
self
to use its UpperHex
implementation when
Debug
-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
Formats each item in a sequence. Read more
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
§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>
§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T
in a Request
§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T
in a tonic::Request
Source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T
in a tonic::Request
Source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T
in a tonic::Request
§impl<L> LayerExt<L> for L
impl<L> LayerExt<L> for L
§fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
Applies the layer to a service and wraps it in [
Layered
].§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Pipes by value. This is generally the method you want to use. Read more
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
Borrows
self
and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
Mutably borrows
self
and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
Borrows
self
, then passes self.as_ref()
into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
Mutably borrows
self
, then passes self.as_mut()
into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
Borrows
self
, then passes self.deref()
into the pipe function.§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Immutable access to the
Borrow<B>
of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
Mutable access to the
BorrowMut<B>
of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
Immutable access to the
AsRef<R>
view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
Mutable access to the
AsMut<R>
view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Immutable access to the
Deref::Target
of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Mutable access to the
Deref::Target
of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
Calls
.tap()
only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
Calls
.tap_mut()
only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
Calls
.tap_borrow()
only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
Calls
.tap_borrow_mut()
only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
Calls
.tap_ref()
only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
Calls
.tap_ref_mut()
only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
Calls
.tap_deref()
only in debug builds, and is erased in release
builds.