Struct sui_core::checkpoints::CheckpointStore
source · pub struct CheckpointStore { /* private fields */ }
Implementations§
source§impl CheckpointStore
impl CheckpointStore
pub fn configurator() -> CheckpointStoreConfigurator
source§impl CheckpointStore
impl CheckpointStore
sourcepub fn open_tables_read_write(
path: PathBuf,
metric_conf: MetricConf,
global_db_options_override: Option<Options>,
tables_db_options_override: Option<DBMapTableConfigMap>
) -> Self
pub fn open_tables_read_write( path: PathBuf, metric_conf: MetricConf, global_db_options_override: Option<Options>, tables_db_options_override: Option<DBMapTableConfigMap> ) -> Self
Opens a set of tables in read-write mode
Only one process is allowed to do this at a time
global_db_options_override
apply to the whole DB
tables_db_options_override
apply to each table. If None
, the attributes from default_options_override_fn
are used if any
sourcepub fn open_tables_transactional(
path: PathBuf,
metric_conf: MetricConf,
global_db_options_override: Option<Options>,
tables_db_options_override: Option<DBMapTableConfigMap>
) -> Self
pub fn open_tables_transactional( path: PathBuf, metric_conf: MetricConf, global_db_options_override: Option<Options>, tables_db_options_override: Option<DBMapTableConfigMap> ) -> Self
Opens a set of tables in transactional read-write mode
Only one process is allowed to do this at a time
global_db_options_override
apply to the whole DB
tables_db_options_override
apply to each table. If None
, the attributes from default_options_override_fn
are used if any
sourcepub fn describe_tables() -> BTreeMap<String, (String, String)>
pub fn describe_tables() -> BTreeMap<String, (String, String)>
Returns a list of the tables name and type pairs
sourcepub fn get_read_only_handle(
primary_path: PathBuf,
with_secondary_path: Option<PathBuf>,
global_db_options_override: Option<Options>,
metric_conf: MetricConf
) -> CheckpointStoreReadOnly
pub fn get_read_only_handle( primary_path: PathBuf, with_secondary_path: Option<PathBuf>, global_db_options_override: Option<Options>, metric_conf: MetricConf ) -> CheckpointStoreReadOnly
This opens the DB in read only mode and returns a struct which exposes debug features
source§impl CheckpointStore
impl CheckpointStore
pub fn new(path: &Path) -> Arc<Self>
pub fn open_readonly(path: &Path) -> CheckpointStoreReadOnly
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 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) -> Option<VerifiedCheckpoint>
pub fn get_latest_locally_computed_checkpoint( &self ) -> Option<CheckpointSummary>
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_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<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 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 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 )
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 !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<'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
§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,
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,
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,
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,
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,
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,
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,
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,
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,
§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>
T
in a 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>
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>
T
in a tonic::Request
§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,
§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,
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,
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
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
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
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
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
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
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
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
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
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
.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
.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
.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
.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
.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
.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
.tap_deref()
only in debug builds, and is erased in release
builds.