pub struct DiemDB { /* private fields */ }Expand description
This holds a handle to the underlying DB responsible for physical storage and provides APIs for access to the core Diem data structures.
Implementations§
source§impl DiemDB
impl DiemDB
pub fn open<P: AsRef<Path> + Clone>( db_root_path: P, readonly: bool, prune_window: Option<u64>, rocksdb_config: RocksdbConfig ) -> Result<Self>
pub fn open_as_secondary<P: AsRef<Path> + Clone>( db_root_path: P, secondary_path: P, rocksdb_config: RocksdbConfig ) -> Result<Self>
sourcepub fn new_for_test<P: AsRef<Path> + Clone>(db_root_path: P) -> Self
pub fn new_for_test<P: AsRef<Path> + Clone>(db_root_path: P) -> Self
This opens db in non-readonly mode, without the pruner.
sourcepub fn update_rocksdb_properties(&self) -> Result<()>
pub fn update_rocksdb_properties(&self) -> Result<()>
This force the db to update rocksdb properties immediately.
sourcepub fn get_backup_handler(&self) -> BackupHandler
pub fn get_backup_handler(&self) -> BackupHandler
Gets an instance of BackupHandler for data backup purpose.
Trait Implementations§
source§impl DbReader for DiemDB
impl DbReader for DiemDB
source§fn get_transactions(
&self,
start_version: Version,
limit: u64,
ledger_version: Version,
fetch_events: bool
) -> Result<TransactionListWithProof>
fn get_transactions( &self, start_version: Version, limit: u64, ledger_version: Version, fetch_events: bool ) -> Result<TransactionListWithProof>
Gets a batch of transactions for the purpose of synchronizing state to another node.
This is used by the State Synchronizer module internally.
source§fn get_epoch_ending_ledger_info(
&self,
version: u64
) -> Result<LedgerInfoWithSignatures>
fn get_epoch_ending_ledger_info( &self, version: u64 ) -> Result<LedgerInfoWithSignatures>
Gets ledger info at specified version and ensures it’s an epoch ending.
source§fn get_epoch_ending_ledger_infos(
&self,
start_epoch: u64,
end_epoch: u64
) -> Result<EpochChangeProof>
fn get_epoch_ending_ledger_infos( &self, start_epoch: u64, end_epoch: u64 ) -> Result<EpochChangeProof>
source§fn get_latest_account_state(
&self,
address: AccountAddress
) -> Result<Option<AccountStateBlob>>
fn get_latest_account_state( &self, address: AccountAddress ) -> Result<Option<AccountStateBlob>>
source§fn get_latest_ledger_info(&self) -> Result<LedgerInfoWithSignatures>
fn get_latest_ledger_info(&self) -> Result<LedgerInfoWithSignatures>
source§fn get_account_transaction(
&self,
address: AccountAddress,
seq_num: u64,
include_events: bool,
ledger_version: Version
) -> Result<Option<TransactionWithProof>>
fn get_account_transaction( &self, address: AccountAddress, seq_num: u64, include_events: bool, ledger_version: Version ) -> Result<Option<TransactionWithProof>>
seq_num-th one associated with the given account. If
the transaction with given seq_num doesn’t exist, returns None.source§fn get_account_transactions(
&self,
address: AccountAddress,
start_seq_num: u64,
limit: u64,
include_events: bool,
ledger_version: Version
) -> Result<AccountTransactionsWithProof>
fn get_account_transactions( &self, address: AccountAddress, start_seq_num: u64, limit: u64, include_events: bool, ledger_version: Version ) -> Result<AccountTransactionsWithProof>
address starting
at sequence number seq_num. Will return no more than limit transactions.
Will ignore transactions with txn.version > ledger_version. Optionally
fetch events for each transaction when fetch_events is true.source§fn get_events(
&self,
event_key: &EventKey,
start: u64,
order: Order,
limit: u64
) -> Result<Vec<(u64, ContractEvent)>>
fn get_events( &self, event_key: &EventKey, start: u64, order: Order, limit: u64 ) -> Result<Vec<(u64, ContractEvent)>>
source§fn get_events_with_proofs(
&self,
event_key: &EventKey,
start: u64,
order: Order,
limit: u64,
known_version: Option<u64>
) -> Result<Vec<EventWithProof>>
fn get_events_with_proofs( &self, event_key: &EventKey, start: u64, order: Order, limit: u64, known_version: Option<u64> ) -> Result<Vec<EventWithProof>>
source§fn get_state_proof_with_ledger_info(
&self,
known_version: u64,
ledger_info_with_sigs: LedgerInfoWithSignatures
) -> Result<StateProof>
fn get_state_proof_with_ledger_info( &self, known_version: u64, ledger_info_with_sigs: LedgerInfoWithSignatures ) -> Result<StateProof>
source§fn get_state_proof(&self, known_version: u64) -> Result<StateProof>
fn get_state_proof(&self, known_version: u64) -> Result<StateProof>
source§fn get_account_state_with_proof(
&self,
address: AccountAddress,
version: Version,
ledger_version: Version
) -> Result<AccountStateWithProof>
fn get_account_state_with_proof( &self, address: AccountAddress, version: Version, ledger_version: Version ) -> Result<AccountStateWithProof>
ledger_versionsource§fn get_startup_info(&self) -> Result<Option<StartupInfo>>
fn get_startup_info(&self) -> Result<Option<StartupInfo>>
DiemDB::get_startup_info.fn get_account_state_with_proof_by_version( &self, address: AccountAddress, version: Version ) -> Result<(Option<AccountStateBlob>, SparseMerkleProof<AccountStateBlob>)>
source§fn get_latest_tree_state(&self) -> Result<TreeState>
fn get_latest_tree_state(&self) -> Result<TreeState>
source§fn get_event_by_version_with_proof(
&self,
event_key: &EventKey,
event_version: u64,
proof_version: u64
) -> Result<EventByVersionWithProof>
fn get_event_by_version_with_proof( &self, event_key: &EventKey, event_version: u64, proof_version: u64 ) -> Result<EventByVersionWithProof>
NewBlockEvent] for the block containing the requested
version and proof that the block actually contains the version.source§fn get_last_version_before_timestamp(
&self,
timestamp: u64,
ledger_version: Version
) -> Result<Version>
fn get_last_version_before_timestamp( &self, timestamp: u64, ledger_version: Version ) -> Result<Version>
source§fn get_latest_transaction_info_option(
&self
) -> Result<Option<(Version, TransactionInfo)>>
fn get_latest_transaction_info_option( &self ) -> Result<Option<(Version, TransactionInfo)>>
Some
– those from a db-restore run.source§fn get_accumulator_root_hash(&self, version: Version) -> Result<HashValue>
fn get_accumulator_root_hash(&self, version: Version) -> Result<HashValue>
source§fn get_accumulator_consistency_proof(
&self,
client_known_version: Option<Version>,
ledger_version: Version
) -> Result<AccumulatorConsistencyProof>
fn get_accumulator_consistency_proof( &self, client_known_version: Option<Version>, ledger_version: Version ) -> Result<AccumulatorConsistencyProof>
AccumulatorConsistencyProof starting from client_known_version
(or pre-genesis if None) until ledger_version. Read moresource§fn get_latest_commit_metadata(&self) -> Result<(u64, u64), Error>
fn get_latest_commit_metadata(&self) -> Result<(u64, u64), Error>
source§fn get_accumulator_summary(
&self,
ledger_version: u64
) -> Result<TransactionAccumulatorSummary, Error>
fn get_accumulator_summary( &self, ledger_version: u64 ) -> Result<TransactionAccumulatorSummary, Error>
TransactionAccumulatorSummary
at the given ledger_version. Read moresource§impl DbWriter for DiemDB
impl DbWriter for DiemDB
source§fn save_transactions(
&self,
txns_to_commit: &[TransactionToCommit],
first_version: Version,
ledger_info_with_sigs: Option<&LedgerInfoWithSignatures>
) -> Result<()>
fn save_transactions( &self, txns_to_commit: &[TransactionToCommit], first_version: Version, ledger_info_with_sigs: Option<&LedgerInfoWithSignatures> ) -> Result<()>
first_version is the version of the first transaction in txns_to_commit.
When ledger_info_with_sigs is provided, verify that the transaction accumulator root hash
it carries is generated after the txns_to_commit are applied.
Note that even if txns_to_commit is empty, frist_version is checked to be
ledger_info_with_sigs.ledger_info.version + 1 if ledger_info_with_sigs is not None.
source§impl ModuleResolver for DiemDB
impl ModuleResolver for DiemDB
source§impl ResourceResolver for DiemDB
impl ResourceResolver for DiemDB
impl MoveDbReader for DiemDB
Auto Trait Implementations§
impl !RefUnwindSafe for DiemDB
impl Send for DiemDB
impl Sync for DiemDB
impl Unpin for DiemDB
impl !UnwindSafe for DiemDB
Blanket Implementations§
§impl<T> Conv for T
impl<T> Conv for 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.source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<E, T> MoveResolver for Twhere
T: ModuleResolver<Error = E> + ResourceResolver<Error = E> + ?Sized,
E: Debug,
impl<E, T> MoveResolver for Twhere T: ModuleResolver<Error = E> + ResourceResolver<Error = E> + ?Sized, E: Debug,
§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) -> Rwhere
Self: Borrow<B>,
B: 'a + ?Sized,
R: 'a,
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> Rwhere Self: Borrow<B>, B: 'a + ?Sized, R: 'a,
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R
) -> Rwhere
Self: BorrowMut<B>,
B: 'a + ?Sized,
R: 'a,
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R ) -> Rwhere Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> Rwhere
Self: AsRef<U>,
U: 'a + ?Sized,
R: 'a,
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> Rwhere Self: AsRef<U>, U: 'a + ?Sized, R: 'a,
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) -> Rwhere
Self: AsMut<U>,
U: 'a + ?Sized,
R: 'a,
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> Rwhere Self: AsMut<U>, U: 'a + ?Sized, R: 'a,
self, then passes self.as_mut() into the pipe
function.§impl<T> Pipe for T
impl<T> Pipe for T
§impl<T> PipeAsRef for T
impl<T> PipeAsRef for T
§impl<T> PipeBorrow for T
impl<T> PipeBorrow for T
§impl<T> PipeDeref for T
impl<T> PipeDeref for T
§impl<T> PipeRef for T
impl<T> PipeRef for T
§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,
§fn pipe_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere R: 'a,
§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Selfwhere
Self: Borrow<B>,
B: ?Sized,
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Selfwhere Self: Borrow<B>, B: ?Sized,
Borrow<B> of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere
Self: BorrowMut<B>,
B: ?Sized,
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere Self: BorrowMut<B>, B: ?Sized,
BorrowMut<B> of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Selfwhere
Self: AsRef<R>,
R: ?Sized,
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Selfwhere Self: AsRef<R>, R: ?Sized,
AsRef<R> view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere
Self: AsMut<R>,
R: ?Sized,
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere Self: AsMut<R>, R: ?Sized,
AsMut<R> view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Selfwhere
Self: Deref<Target = T>,
T: ?Sized,
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Selfwhere Self: Deref<Target = T>, T: ?Sized,
Deref::Target of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Selfwhere
Self: DerefMut<Target = T> + Deref,
T: ?Sized,
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Selfwhere Self: DerefMut<Target = T> + Deref, T: ?Sized,
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)) -> Selfwhere
Self: Borrow<B>,
B: ?Sized,
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Selfwhere Self: Borrow<B>, B: ?Sized,
.tap_borrow() only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere
Self: BorrowMut<B>,
B: ?Sized,
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere Self: BorrowMut<B>, B: ?Sized,
.tap_borrow_mut() only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Selfwhere
Self: AsRef<R>,
R: ?Sized,
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Selfwhere Self: AsRef<R>, R: ?Sized,
.tap_ref() only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere
Self: AsMut<R>,
R: ?Sized,
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere Self: AsMut<R>, R: ?Sized,
.tap_ref_mut() only in debug builds, and is erased in release
builds.§impl<T> Tap for T
impl<T> Tap for T
§fn tap<F, R>(self, func: F) -> Selfwhere
F: FnOnce(&Self) -> R,
fn tap<F, R>(self, func: F) -> Selfwhere F: FnOnce(&Self) -> R,
§fn tap_dbg<F, R>(self, func: F) -> Selfwhere
F: FnOnce(&Self) -> R,
fn tap_dbg<F, R>(self, func: F) -> Selfwhere F: FnOnce(&Self) -> R,
tap in debug builds, and does nothing in release builds.§fn tap_mut<F, R>(self, func: F) -> Selfwhere
F: FnOnce(&mut Self) -> R,
fn tap_mut<F, R>(self, func: F) -> Selfwhere F: FnOnce(&mut Self) -> R,
§fn tap_mut_dbg<F, R>(self, func: F) -> Selfwhere
F: FnOnce(&mut Self) -> R,
fn tap_mut_dbg<F, R>(self, func: F) -> Selfwhere F: FnOnce(&mut Self) -> R,
tap_mut in debug builds, and does nothing in release builds.§impl<T, U> TapAsRef<U> for Twhere
U: ?Sized,
impl<T, U> TapAsRef<U> for Twhere U: ?Sized,
§fn tap_ref<F, R>(self, func: F) -> Selfwhere
Self: AsRef<T>,
F: FnOnce(&T) -> R,
fn tap_ref<F, R>(self, func: F) -> Selfwhere Self: AsRef<T>, F: FnOnce(&T) -> R,
§fn tap_ref_dbg<F, R>(self, func: F) -> Selfwhere
Self: AsRef<T>,
F: FnOnce(&T) -> R,
fn tap_ref_dbg<F, R>(self, func: F) -> Selfwhere Self: AsRef<T>, F: FnOnce(&T) -> R,
tap_ref in debug builds, and does nothing in release builds.§fn tap_ref_mut<F, R>(self, func: F) -> Selfwhere
Self: AsMut<T>,
F: FnOnce(&mut T) -> R,
fn tap_ref_mut<F, R>(self, func: F) -> Selfwhere Self: AsMut<T>, F: FnOnce(&mut T) -> R,
§fn tap_ref_mut_dbg<F, R>(self, func: F) -> Selfwhere
Self: AsMut<T>,
F: FnOnce(&mut T) -> R,
fn tap_ref_mut_dbg<F, R>(self, func: F) -> Selfwhere Self: AsMut<T>, F: FnOnce(&mut T) -> R,
tap_ref_mut in debug builds, and does nothing in release builds.§impl<T, U> TapBorrow<U> for Twhere
U: ?Sized,
impl<T, U> TapBorrow<U> for Twhere U: ?Sized,
§fn tap_borrow<F, R>(self, func: F) -> Selfwhere
Self: Borrow<T>,
F: FnOnce(&T) -> R,
fn tap_borrow<F, R>(self, func: F) -> Selfwhere Self: Borrow<T>, F: FnOnce(&T) -> R,
§fn tap_borrow_dbg<F, R>(self, func: F) -> Selfwhere
Self: Borrow<T>,
F: FnOnce(&T) -> R,
fn tap_borrow_dbg<F, R>(self, func: F) -> Selfwhere Self: Borrow<T>, F: FnOnce(&T) -> R,
tap_borrow in debug builds, and does nothing in release builds.§fn tap_borrow_mut<F, R>(self, func: F) -> Selfwhere
Self: BorrowMut<T>,
F: FnOnce(&mut T) -> R,
fn tap_borrow_mut<F, R>(self, func: F) -> Selfwhere Self: BorrowMut<T>, F: FnOnce(&mut T) -> R,
§fn tap_borrow_mut_dbg<F, R>(self, func: F) -> Selfwhere
Self: BorrowMut<T>,
F: FnOnce(&mut T) -> R,
fn tap_borrow_mut_dbg<F, R>(self, func: F) -> Selfwhere Self: BorrowMut<T>, F: FnOnce(&mut T) -> R,
tap_borrow_mut in debug builds, and does nothing in release
builds.§impl<T> TapDeref for T
impl<T> TapDeref for T
§fn tap_deref<F, R>(self, func: F) -> Selfwhere
Self: Deref,
F: FnOnce(&Self::Target) -> R,
fn tap_deref<F, R>(self, func: F) -> Selfwhere Self: Deref, F: FnOnce(&Self::Target) -> R,
self for inspection.§fn tap_deref_dbg<F, R>(self, func: F) -> Selfwhere
Self: Deref,
F: FnOnce(&Self::Target) -> R,
fn tap_deref_dbg<F, R>(self, func: F) -> Selfwhere Self: Deref, F: FnOnce(&Self::Target) -> R,
tap_deref in debug builds, and does nothing in release builds.§fn tap_deref_mut<F, R>(self, func: F) -> Selfwhere
Self: DerefMut,
F: FnOnce(&mut Self::Target) -> R,
fn tap_deref_mut<F, R>(self, func: F) -> Selfwhere Self: DerefMut, F: FnOnce(&mut Self::Target) -> R,
self for modification.§fn tap_deref_mut_dbg<F, R>(self, func: F) -> Selfwhere
Self: DerefMut,
F: FnOnce(&mut Self::Target) -> R,
fn tap_deref_mut_dbg<F, R>(self, func: F) -> Selfwhere Self: DerefMut, F: FnOnce(&mut Self::Target) -> R,
tap_deref_mut in debug builds, and does nothing in release
builds.