Struct mz_catalog::durable::persist::PersistHandle
source · pub(crate) struct PersistHandle<T: TryIntoStateUpdateKind, U: ApplyUpdate<T>> {
pub(crate) mode: Mode,
since_handle: SinceHandle<SourceData, (), Timestamp, Diff, i64>,
write_handle: WriteHandle<SourceData, (), Timestamp, Diff>,
listen: Listen<SourceData, (), Timestamp, Diff>,
persist_client: PersistClient,
shard_id: ShardId,
pub(crate) snapshot: Vec<(T, Timestamp, Diff)>,
update_applier: U,
pub(crate) upper: Timestamp,
fenceable_token: FenceableToken,
catalog_content_version: Version,
metrics: Arc<Metrics>,
}
Expand description
A handle for interacting with the persist catalog shard.
The catalog shard is used in multiple different contexts, for example pre-open and post-open, but for all contexts the majority of the durable catalog’s behavior is identical. This struct implements those behaviors that are identical while allowing the user to specify the different behaviors via generic parameters.
The behavior of the durable catalog can be different along one of two axes. The first is the
format of each individual update, i.e. raw binary, the current protobuf version, previous
protobuf versions, etc. The second axis is what to do with each individual update, for example
before opening we cache all config updates but don’t cache them after opening. These behaviors
are customizable via the T: TryIntoStateUpdateKind
and U: ApplyUpdate<T>
generic parameters
respectively.
Fields§
§mode: Mode
The Mode
that this catalog was opened in.
since_handle: SinceHandle<SourceData, (), Timestamp, Diff, i64>
Since handle to control compaction.
write_handle: WriteHandle<SourceData, (), Timestamp, Diff>
Write handle to persist.
listen: Listen<SourceData, (), Timestamp, Diff>
Listener to catalog changes.
persist_client: PersistClient
Handle for connecting to persist.
shard_id: ShardId
Catalog shard ID.
snapshot: Vec<(T, Timestamp, Diff)>
Cache of the most recent catalog snapshot.
We use a tuple instead of StateUpdate
to make consolidation easier.
update_applier: U
Applies custom processing, filtering, and fencing for each individual update.
upper: Timestamp
The current upper of the persist shard.
fenceable_token: FenceableToken
The fence token of the catalog, if one exists.
catalog_content_version: Version
The semantic version of the current binary.
metrics: Arc<Metrics>
Metrics for the persist catalog.
Implementations§
source§impl<T: TryIntoStateUpdateKind, U: ApplyUpdate<T>> PersistHandle<T, U>
impl<T: TryIntoStateUpdateKind, U: ApplyUpdate<T>> PersistHandle<T, U>
sourceasync fn increment_catalog_upgrade_shard_version(&self, organization_id: Uuid)
async fn increment_catalog_upgrade_shard_version(&self, organization_id: Uuid)
Increment the version in the catalog upgrade shard to the code’s current version.
sourceasync fn current_upper(&mut self) -> Timestamp
async fn current_upper(&mut self) -> Timestamp
Fetch the current upper of the catalog state.
sourcepub(crate) async fn compare_and_append<S: IntoStateUpdateKindJson>(
&mut self,
updates: Vec<(S, Diff)>,
) -> Result<Timestamp, CompareAndAppendError>
pub(crate) async fn compare_and_append<S: IntoStateUpdateKindJson>( &mut self, updates: Vec<(S, Diff)>, ) -> Result<Timestamp, CompareAndAppendError>
Appends updates
iff the current global upper of the catalog is self.upper
.
Returns the next upper used to commit the transaction.
sourceasync fn snapshot_unconsolidated(&mut self) -> Vec<StateUpdate<StateUpdateKind>>
async fn snapshot_unconsolidated(&mut self) -> Vec<StateUpdate<StateUpdateKind>>
Generates an iterator of StateUpdate
that contain all unconsolidated updates to the
catalog state up to, and including, as_of
.
sourcepub(crate) async fn sync_to_current_upper(&mut self) -> Result<(), FenceError>
pub(crate) async fn sync_to_current_upper(&mut self) -> Result<(), FenceError>
Listen and apply all updates that are currently in persist.
Returns an error if this instance has been fenced out.
sourcepub(crate) async fn sync(
&mut self,
target_upper: Timestamp,
) -> Result<(), FenceError>
pub(crate) async fn sync( &mut self, target_upper: Timestamp, ) -> Result<(), FenceError>
Listen and apply all updates up to target_upper
.
Returns an error if this instance has been fenced out.
async fn sync_inner( &mut self, target_upper: Timestamp, ) -> Result<(), FenceError>
pub(crate) fn apply_updates( &mut self, updates: impl IntoIterator<Item = StateUpdate<T>>, ) -> Result<(), FenceError>
pub(crate) fn consolidate(&mut self)
sourceasync fn with_trace<R>(
&mut self,
f: impl FnOnce(&Vec<(T, Timestamp, Diff)>) -> Result<R, CatalogError>,
) -> Result<R, CatalogError>
async fn with_trace<R>( &mut self, f: impl FnOnce(&Vec<(T, Timestamp, Diff)>) -> Result<R, CatalogError>, ) -> Result<R, CatalogError>
Execute and return the results of f
on the current catalog trace.
Will return an error if the catalog has been fenced out.
sourceasync fn read_handle(&self) -> ReadHandle<SourceData, (), Timestamp, Diff>
async fn read_handle(&self) -> ReadHandle<SourceData, (), Timestamp, Diff>
Open a read handle to the catalog.
source§impl<U: ApplyUpdate<StateUpdateKind>> PersistHandle<StateUpdateKind, U>
impl<U: ApplyUpdate<StateUpdateKind>> PersistHandle<StateUpdateKind, U>
sourceasync fn with_snapshot<T>(
&mut self,
f: impl FnOnce(Snapshot) -> Result<T, CatalogError>,
) -> Result<T, CatalogError>
async fn with_snapshot<T>( &mut self, f: impl FnOnce(Snapshot) -> Result<T, CatalogError>, ) -> Result<T, CatalogError>
Execute and return the results of f
on the current catalog snapshot.
Will return an error if the catalog has been fenced out.
sourceasync fn persist_snapshot(
&mut self,
) -> impl Iterator<Item = StateUpdate> + DoubleEndedIterator
async fn persist_snapshot( &mut self, ) -> impl Iterator<Item = StateUpdate> + DoubleEndedIterator
Generates an iterator of StateUpdate
that contain all updates to the catalog
state.
The output is fetched directly from persist instead of the in-memory cache.
The output is consolidated and sorted by timestamp in ascending order.
source§impl PersistHandle<StateUpdateKindJson, UnopenedCatalogStateInner>
impl PersistHandle<StateUpdateKindJson, UnopenedCatalogStateInner>
sourcepub(crate) async fn new(
persist_client: PersistClient,
organization_id: Uuid,
version: Version,
deploy_generation: Option<u64>,
metrics: Arc<Metrics>,
) -> Result<PersistHandle<StateUpdateKindJson, UnopenedCatalogStateInner>, DurableCatalogError>
pub(crate) async fn new( persist_client: PersistClient, organization_id: Uuid, version: Version, deploy_generation: Option<u64>, metrics: Arc<Metrics>, ) -> Result<PersistHandle<StateUpdateKindJson, UnopenedCatalogStateInner>, DurableCatalogError>
Create a new UnopenedPersistCatalogState
to the catalog state associated with
organization_id
.
All usages of the persist catalog must go through this function. That includes the catalog-debug tool, the adapter’s catalog, etc.
async fn open_inner( self, mode: Mode, initial_ts: EpochMillis, bootstrap_args: &BootstrapArgs, ) -> Result<Box<dyn DurableCatalogState>, CatalogError>
sourcefn is_initialized_inner(&self) -> bool
fn is_initialized_inner(&self) -> bool
Reports if the catalog state has been initialized.
NOTE: This is the answer as of the last call to PersistHandle::sync
or PersistHandle::sync_to_current_upper
,
not necessarily what is currently in persist.
sourceasync fn get_current_config(
&mut self,
key: &str,
) -> Result<Option<u64>, DurableCatalogError>
async fn get_current_config( &mut self, key: &str, ) -> Result<Option<u64>, DurableCatalogError>
Get the current value of config key
.
Some configs need to be read before the catalog is opened for bootstrapping.
sourcepub(crate) async fn get_user_version(
&mut self,
) -> Result<Option<u64>, DurableCatalogError>
pub(crate) async fn get_user_version( &mut self, ) -> Result<Option<u64>, DurableCatalogError>
Get the user version of this instance.
The user version is used to determine if a migration is needed.
sourceasync fn get_current_setting(
&mut self,
name: &str,
) -> Result<Option<String>, DurableCatalogError>
async fn get_current_setting( &mut self, name: &str, ) -> Result<Option<String>, DurableCatalogError>
Get the current value of setting name
.
Some settings need to be read before the catalog is opened for bootstrapping.
sourceasync fn get_catalog_content_version(
&mut self,
) -> Result<Option<Version>, DurableCatalogError>
async fn get_catalog_content_version( &mut self, ) -> Result<Option<Version>, DurableCatalogError>
Get the catalog content version.
The catalog content version is the semantic version of the most recent binary that wrote to the catalog.
source§impl PersistHandle<StateUpdateKindJson, UnopenedCatalogStateInner>
impl PersistHandle<StateUpdateKindJson, UnopenedCatalogStateInner>
sourcepub(crate) async fn debug_edit<T: Collection>(
&mut self,
key: T::Key,
value: T::Value,
) -> Result<Option<T::Value>, CatalogError>
pub(crate) async fn debug_edit<T: Collection>( &mut self, key: T::Key, value: T::Value, ) -> Result<Option<T::Value>, CatalogError>
Manually update value of key
in collection T
to value
.
sourcepub(crate) async fn debug_delete<T: Collection>(
&mut self,
key: T::Key,
) -> Result<(), CatalogError>
pub(crate) async fn debug_delete<T: Collection>( &mut self, key: T::Key, ) -> Result<(), CatalogError>
Manually delete key
from collection T
.
sourceasync fn current_snapshot(
&mut self,
) -> Result<impl IntoIterator<Item = StateUpdate> + '_, CatalogError>
async fn current_snapshot( &mut self, ) -> Result<impl IntoIterator<Item = StateUpdate> + '_, CatalogError>
Generates a Vec<StateUpdate>
that contain all updates to the catalog
state.
The output is consolidated and sorted by timestamp in ascending order and the current upper.
Trait Implementations§
source§impl<T: Debug + TryIntoStateUpdateKind, U: Debug + ApplyUpdate<T>> Debug for PersistHandle<T, U>
impl<T: Debug + TryIntoStateUpdateKind, U: Debug + ApplyUpdate<T>> Debug for PersistHandle<T, U>
source§impl DurableCatalogState for PersistHandle<StateUpdateKind, CatalogStateInner>
impl DurableCatalogState for PersistHandle<StateUpdateKind, CatalogStateInner>
source§fn is_read_only(&self) -> bool
fn is_read_only(&self) -> bool
source§fn is_savepoint(&self) -> bool
fn is_savepoint(&self) -> bool
source§fn transaction<'life0, 'async_trait>(
&'life0 mut self,
) -> Pin<Box<dyn Future<Output = Result<Transaction<'_>, CatalogError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn transaction<'life0, 'async_trait>(
&'life0 mut self,
) -> Pin<Box<dyn Future<Output = Result<Transaction<'_>, CatalogError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
source§fn commit_transaction<'life0, 'async_trait>(
&'life0 mut self,
txn_batch: TransactionBatch,
) -> Pin<Box<dyn Future<Output = Result<Timestamp, CatalogError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn commit_transaction<'life0, 'async_trait>(
&'life0 mut self,
txn_batch: TransactionBatch,
) -> Pin<Box<dyn Future<Output = Result<Timestamp, CatalogError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
source§fn confirm_leadership<'life0, 'async_trait>(
&'life0 mut self,
) -> Pin<Box<dyn Future<Output = Result<(), CatalogError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn confirm_leadership<'life0, 'async_trait>(
&'life0 mut self,
) -> Pin<Box<dyn Future<Output = Result<(), CatalogError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
source§fn allocate_id<'life0, 'life1, 'async_trait>(
&'life0 mut self,
id_type: &'life1 str,
amount: u64,
) -> Pin<Box<dyn Future<Output = Result<Vec<u64>, CatalogError>> + Send + 'async_trait>>where
Self: Send + 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn allocate_id<'life0, 'life1, 'async_trait>(
&'life0 mut self,
id_type: &'life1 str,
amount: u64,
) -> Pin<Box<dyn Future<Output = Result<Vec<u64>, CatalogError>> + Send + 'async_trait>>where
Self: Send + 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
amount
IDs of id_type
.source§fn allocate_system_ids<'life0, 'async_trait>(
&'life0 mut self,
amount: u64,
) -> Pin<Box<dyn Future<Output = Result<Vec<(CatalogItemId, GlobalId)>, CatalogError>> + Send + 'async_trait>>where
Self: Send + 'async_trait,
'life0: 'async_trait,
fn allocate_system_ids<'life0, 'async_trait>(
&'life0 mut self,
amount: u64,
) -> Pin<Box<dyn Future<Output = Result<Vec<(CatalogItemId, GlobalId)>, CatalogError>> + Send + 'async_trait>>where
Self: Send + 'async_trait,
'life0: 'async_trait,
amount
system CatalogItemId
s.source§fn allocate_user_id<'life0, 'async_trait>(
&'life0 mut self,
) -> Pin<Box<dyn Future<Output = Result<(CatalogItemId, GlobalId), CatalogError>> + Send + 'async_trait>>where
Self: Send + 'async_trait,
'life0: 'async_trait,
fn allocate_user_id<'life0, 'async_trait>(
&'life0 mut self,
) -> Pin<Box<dyn Future<Output = Result<(CatalogItemId, GlobalId), CatalogError>> + Send + 'async_trait>>where
Self: Send + 'async_trait,
'life0: 'async_trait,
CatalogItemId
and GlobalId
.source§impl OpenableDurableCatalogState for PersistHandle<StateUpdateKindJson, UnopenedCatalogStateInner>
impl OpenableDurableCatalogState for PersistHandle<StateUpdateKindJson, UnopenedCatalogStateInner>
source§fn open_savepoint<'life0, 'async_trait>(
self: Box<Self>,
initial_ts: EpochMillis,
bootstrap_args: &'life0 BootstrapArgs,
) -> Pin<Box<dyn Future<Output = Result<Box<dyn DurableCatalogState>, CatalogError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn open_savepoint<'life0, 'async_trait>(
self: Box<Self>,
initial_ts: EpochMillis,
bootstrap_args: &'life0 BootstrapArgs,
) -> Pin<Box<dyn Future<Output = Result<Box<dyn DurableCatalogState>, CatalogError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
source§fn open_read_only<'life0, 'async_trait>(
self: Box<Self>,
bootstrap_args: &'life0 BootstrapArgs,
) -> Pin<Box<dyn Future<Output = Result<Box<dyn DurableCatalogState>, CatalogError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn open_read_only<'life0, 'async_trait>(
self: Box<Self>,
bootstrap_args: &'life0 BootstrapArgs,
) -> Pin<Box<dyn Future<Output = Result<Box<dyn DurableCatalogState>, CatalogError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
source§fn open<'life0, 'async_trait>(
self: Box<Self>,
initial_ts: EpochMillis,
bootstrap_args: &'life0 BootstrapArgs,
) -> Pin<Box<dyn Future<Output = Result<Box<dyn DurableCatalogState>, CatalogError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn open<'life0, 'async_trait>(
self: Box<Self>,
initial_ts: EpochMillis,
bootstrap_args: &'life0 BootstrapArgs,
) -> Pin<Box<dyn Future<Output = Result<Box<dyn DurableCatalogState>, CatalogError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
source§fn open_debug<'async_trait>(
self: Box<Self>,
) -> Pin<Box<dyn Future<Output = Result<DebugCatalogState, CatalogError>> + Send + 'async_trait>>where
Self: 'async_trait,
fn open_debug<'async_trait>(
self: Box<Self>,
) -> Pin<Box<dyn Future<Output = Result<DebugCatalogState, CatalogError>> + Send + 'async_trait>>where
Self: 'async_trait,
source§fn is_initialized<'life0, 'async_trait>(
&'life0 mut self,
) -> Pin<Box<dyn Future<Output = Result<bool, CatalogError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn is_initialized<'life0, 'async_trait>(
&'life0 mut self,
) -> Pin<Box<dyn Future<Output = Result<bool, CatalogError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
source§fn epoch<'life0, 'async_trait>(
&'life0 mut self,
) -> Pin<Box<dyn Future<Output = Result<Epoch, CatalogError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn epoch<'life0, 'async_trait>(
&'life0 mut self,
) -> Pin<Box<dyn Future<Output = Result<Epoch, CatalogError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
DurableCatalogState
s. When a new DurableCatalogState
opens the
catalog, it will increment the epoch by one (or initialize it to some
value if there’s no existing epoch) and store the value in memory. It’s
guaranteed that no two DurableCatalogState
s will return the same value
for their epoch. Read moresource§fn get_deployment_generation<'life0, 'async_trait>(
&'life0 mut self,
) -> Pin<Box<dyn Future<Output = Result<u64, CatalogError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_deployment_generation<'life0, 'async_trait>(
&'life0 mut self,
) -> Pin<Box<dyn Future<Output = Result<u64, CatalogError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
source§fn get_enable_0dt_deployment<'life0, 'async_trait>(
&'life0 mut self,
) -> Pin<Box<dyn Future<Output = Result<Option<bool>, CatalogError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_enable_0dt_deployment<'life0, 'async_trait>(
&'life0 mut self,
) -> Pin<Box<dyn Future<Output = Result<Option<bool>, CatalogError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
enable_0dt_deployment
config value of this instance. Read moresource§fn get_0dt_deployment_max_wait<'life0, 'async_trait>(
&'life0 mut self,
) -> Pin<Box<dyn Future<Output = Result<Option<Duration>, CatalogError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_0dt_deployment_max_wait<'life0, 'async_trait>(
&'life0 mut self,
) -> Pin<Box<dyn Future<Output = Result<Option<Duration>, CatalogError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
with_0dt_deployment_max_wait
config value of this instance. Read moresource§fn get_enable_0dt_deployment_panic_after_timeout<'life0, 'async_trait>(
&'life0 mut self,
) -> Pin<Box<dyn Future<Output = Result<Option<bool>, CatalogError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_enable_0dt_deployment_panic_after_timeout<'life0, 'async_trait>(
&'life0 mut self,
) -> Pin<Box<dyn Future<Output = Result<Option<bool>, CatalogError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
enable_0dt_deployment_panic_after_timeout
config value of this
instance. Read moresource§fn has_system_config_synced_once<'life0, 'async_trait>(
&'life0 mut self,
) -> Pin<Box<dyn Future<Output = Result<bool, DurableCatalogError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn has_system_config_synced_once<'life0, 'async_trait>(
&'life0 mut self,
) -> Pin<Box<dyn Future<Output = Result<bool, DurableCatalogError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
source§fn trace_unconsolidated<'life0, 'async_trait>(
&'life0 mut self,
) -> Pin<Box<dyn Future<Output = Result<Trace, CatalogError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn trace_unconsolidated<'life0, 'async_trait>(
&'life0 mut self,
) -> Pin<Box<dyn Future<Output = Result<Trace, CatalogError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Trace
of catalog contents.source§impl ReadOnlyDurableCatalogState for PersistHandle<StateUpdateKind, CatalogStateInner>
impl ReadOnlyDurableCatalogState for PersistHandle<StateUpdateKind, CatalogStateInner>
source§fn epoch(&self) -> Epoch
fn epoch(&self) -> Epoch
DurableCatalogState
s. When a new DurableCatalogState
opens the
catalog, it will increment the epoch by one (or initialize it to some
value if there’s no existing epoch) and store the value in memory. It’s
guaranteed that no two DurableCatalogState
s will return the same value
for their epoch. Read moresource§fn expire<'async_trait>(
self: Box<Self>,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
fn expire<'async_trait>(
self: Box<Self>,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
source§fn get_audit_logs<'life0, 'async_trait>(
&'life0 mut self,
) -> Pin<Box<dyn Future<Output = Result<Vec<VersionedEvent>, CatalogError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_audit_logs<'life0, 'async_trait>(
&'life0 mut self,
) -> Pin<Box<dyn Future<Output = Result<Vec<VersionedEvent>, CatalogError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
source§fn get_next_id<'life0, 'life1, 'async_trait>(
&'life0 mut self,
id_type: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<u64, CatalogError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get_next_id<'life0, 'life1, 'async_trait>(
&'life0 mut self,
id_type: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<u64, CatalogError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
id_type
, without allocating it.source§fn get_deployment_generation<'life0, 'async_trait>(
&'life0 mut self,
) -> Pin<Box<dyn Future<Output = Result<u64, CatalogError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_deployment_generation<'life0, 'async_trait>(
&'life0 mut self,
) -> Pin<Box<dyn Future<Output = Result<u64, CatalogError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
source§fn snapshot<'life0, 'async_trait>(
&'life0 mut self,
) -> Pin<Box<dyn Future<Output = Result<Snapshot, CatalogError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn snapshot<'life0, 'async_trait>(
&'life0 mut self,
) -> Pin<Box<dyn Future<Output = Result<Snapshot, CatalogError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
source§fn sync_to_current_updates<'life0, 'async_trait>(
&'life0 mut self,
) -> Pin<Box<dyn Future<Output = Result<Vec<StateUpdate>, CatalogError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn sync_to_current_updates<'life0, 'async_trait>(
&'life0 mut self,
) -> Pin<Box<dyn Future<Output = Result<Vec<StateUpdate>, CatalogError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
source§fn sync_updates<'life0, 'async_trait>(
&'life0 mut self,
target_upper: Timestamp,
) -> Pin<Box<dyn Future<Output = Result<Vec<StateUpdate>, CatalogError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn sync_updates<'life0, 'async_trait>(
&'life0 mut self,
target_upper: Timestamp,
) -> Pin<Box<dyn Future<Output = Result<Vec<StateUpdate>, CatalogError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
target_upper
. Read moresource§fn get_next_user_item_id<'life0, 'async_trait>(
&'life0 mut self,
) -> Pin<Box<dyn Future<Output = Result<u64, CatalogError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_next_user_item_id<'life0, 'async_trait>(
&'life0 mut self,
) -> Pin<Box<dyn Future<Output = Result<u64, CatalogError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
source§fn get_next_system_item_id<'life0, 'async_trait>(
&'life0 mut self,
) -> Pin<Box<dyn Future<Output = Result<u64, CatalogError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_next_system_item_id<'life0, 'async_trait>(
&'life0 mut self,
) -> Pin<Box<dyn Future<Output = Result<u64, CatalogError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
source§fn get_next_system_replica_id<'life0, 'async_trait>(
&'life0 mut self,
) -> Pin<Box<dyn Future<Output = Result<u64, CatalogError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_next_system_replica_id<'life0, 'async_trait>(
&'life0 mut self,
) -> Pin<Box<dyn Future<Output = Result<u64, CatalogError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
source§fn get_next_user_replica_id<'life0, 'async_trait>(
&'life0 mut self,
) -> Pin<Box<dyn Future<Output = Result<u64, CatalogError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_next_user_replica_id<'life0, 'async_trait>(
&'life0 mut self,
) -> Pin<Box<dyn Future<Output = Result<u64, CatalogError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Auto Trait Implementations§
impl<T, U> Freeze for PersistHandle<T, U>where
U: Freeze,
impl<T, U> !RefUnwindSafe for PersistHandle<T, U>
impl<T, U> Send for PersistHandle<T, U>
impl<T, U> Sync for PersistHandle<T, U>
impl<T, U> Unpin for PersistHandle<T, U>
impl<T, U> !UnwindSafe for PersistHandle<T, U>
Blanket Implementations§
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
source§impl<T> FmtForward for T
impl<T> FmtForward for T
source§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.source§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.source§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.source§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.source§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.source§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.source§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.source§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> FutureExt for T
impl<T> FutureExt for T
source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
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<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, U> OverrideFrom<Option<&T>> for Uwhere
U: OverrideFrom<T>,
impl<T, U> OverrideFrom<Option<&T>> for Uwhere
U: OverrideFrom<T>,
source§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
source§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 moresource§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 moresource§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
source§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
source§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.source§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.source§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.source§impl<T> Pointable for T
impl<T> Pointable for T
source§impl<P, R> ProtoType<R> for Pwhere
R: RustType<P>,
impl<P, R> ProtoType<R> for Pwhere
R: RustType<P>,
source§fn into_rust(self) -> Result<R, TryFromProtoError>
fn into_rust(self) -> Result<R, TryFromProtoError>
RustType::from_proto
.source§fn from_rust(rust: &R) -> P
fn from_rust(rust: &R) -> P
RustType::into_proto
.source§impl<'a, S, T> Semigroup<&'a S> for Twhere
T: Semigroup<S>,
impl<'a, S, T> Semigroup<&'a S> for Twhere
T: Semigroup<S>,
source§fn plus_equals(&mut self, rhs: &&'a S)
fn plus_equals(&mut self, rhs: &&'a S)
std::ops::AddAssign
, for types that do not implement AddAssign
.source§impl<T> Tap for T
impl<T> Tap for T
source§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 moresource§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 moresource§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 moresource§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 moresource§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 moresource§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 moresource§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.source§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.source§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.source§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.source§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.source§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.source§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.