pub trait AdmissionOperationStore: Send + Sync {
// Required methods
fn begin(
&self,
operation: &AdmissionOperationV1,
fence: &StoreMutationFence,
trusted_now_unix_ms: u64,
) -> Result<AdmissionBeginResult, AdmissionOperationStoreError>;
fn load_by_operation_id(
&self,
operation_id: &AdmissionOperationId,
) -> Result<Option<AdmissionOperationV1>, AdmissionOperationStoreError>;
fn load_by_replay_key(
&self,
replay_key: &AdmissionReplayKey,
) -> Result<Option<AdmissionOperationV1>, AdmissionOperationStoreError>;
fn compare_and_swap(
&self,
command: &AdmissionOperationCommand,
trusted_now_unix_ms: u64,
) -> Result<AdmissionCommandResult, AdmissionOperationStoreError>;
fn claim_recovery_untrusted(
&self,
operation_id: &AdmissionOperationId,
expected_version: u64,
claimant_id: &AdmissionIdentifier,
trusted_now_unix_ms: u64,
expires_at_unix_ms: u64,
fence: &StoreMutationFence,
) -> Result<UntrustedAdmissionRecoveryClaim, AdmissionOperationStoreError>;
fn revalidate_recovery_claim(
&self,
operation: &AdmissionOperationV1,
claim: &UntrustedAdmissionRecoveryClaim,
trusted_now_unix_ms: u64,
current_store_fence: &StoreMutationFence,
) -> Result<(), AdmissionOperationStoreError>;
fn list_recoverable(
&self,
not_after_unix_ms: u64,
limit: usize,
) -> Result<Vec<AdmissionOperationV1>, AdmissionOperationStoreError>;
fn load_terminal_replay(
&self,
replay_key: &AdmissionReplayKey,
) -> Result<Option<AdmissionTerminalReplay>, AdmissionOperationStoreError>;
}Required Methods§
fn begin( &self, operation: &AdmissionOperationV1, fence: &StoreMutationFence, trusted_now_unix_ms: u64, ) -> Result<AdmissionBeginResult, AdmissionOperationStoreError>
fn load_by_operation_id( &self, operation_id: &AdmissionOperationId, ) -> Result<Option<AdmissionOperationV1>, AdmissionOperationStoreError>
fn load_by_replay_key( &self, replay_key: &AdmissionReplayKey, ) -> Result<Option<AdmissionOperationV1>, AdmissionOperationStoreError>
fn compare_and_swap( &self, command: &AdmissionOperationCommand, trusted_now_unix_ms: u64, ) -> Result<AdmissionCommandResult, AdmissionOperationStoreError>
Sourcefn claim_recovery_untrusted(
&self,
operation_id: &AdmissionOperationId,
expected_version: u64,
claimant_id: &AdmissionIdentifier,
trusted_now_unix_ms: u64,
expires_at_unix_ms: u64,
fence: &StoreMutationFence,
) -> Result<UntrustedAdmissionRecoveryClaim, AdmissionOperationStoreError>
fn claim_recovery_untrusted( &self, operation_id: &AdmissionOperationId, expected_version: u64, claimant_id: &AdmissionIdentifier, trusted_now_unix_ms: u64, expires_at_unix_ms: u64, fence: &StoreMutationFence, ) -> Result<UntrustedAdmissionRecoveryClaim, AdmissionOperationStoreError>
Persist a structurally checked claim. The returned value remains
untrusted until QualifiedAdmissionOperationStore::claim_recovery
rechecks it through this store.
Sourcefn revalidate_recovery_claim(
&self,
operation: &AdmissionOperationV1,
claim: &UntrustedAdmissionRecoveryClaim,
trusted_now_unix_ms: u64,
current_store_fence: &StoreMutationFence,
) -> Result<(), AdmissionOperationStoreError>
fn revalidate_recovery_claim( &self, operation: &AdmissionOperationV1, claim: &UntrustedAdmissionRecoveryClaim, trusted_now_unix_ms: u64, current_store_fence: &StoreMutationFence, ) -> Result<(), AdmissionOperationStoreError>
Re-read the durable claim under the current store fence and verify its exact operation snapshot and historical coordinator lease.
Sourcefn list_recoverable(
&self,
not_after_unix_ms: u64,
limit: usize,
) -> Result<Vec<AdmissionOperationV1>, AdmissionOperationStoreError>
fn list_recoverable( &self, not_after_unix_ms: u64, limit: usize, ) -> Result<Vec<AdmissionOperationV1>, AdmissionOperationStoreError>
Lists non-terminal operations that require startup recovery work.
Quiescent ApprovalRequired operations must be excluded before applying
limit: they are waiting for external approval rather than recovery, and
allowing them to occupy a page can starve later operations that do need
reconciliation.
fn load_terminal_replay( &self, replay_key: &AdmissionReplayKey, ) -> Result<Option<AdmissionTerminalReplay>, AdmissionOperationStoreError>
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".