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_version
source§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.