Skip to main content

AdmissionOperationStore

Trait AdmissionOperationStore 

Source
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§

Source

fn begin( &self, operation: &AdmissionOperationV1, fence: &StoreMutationFence, trusted_now_unix_ms: u64, ) -> Result<AdmissionBeginResult, AdmissionOperationStoreError>

Source

fn load_by_operation_id( &self, operation_id: &AdmissionOperationId, ) -> Result<Option<AdmissionOperationV1>, AdmissionOperationStoreError>

Source

fn load_by_replay_key( &self, replay_key: &AdmissionReplayKey, ) -> Result<Option<AdmissionOperationV1>, AdmissionOperationStoreError>

Source

fn compare_and_swap( &self, command: &AdmissionOperationCommand, trusted_now_unix_ms: u64, ) -> Result<AdmissionCommandResult, AdmissionOperationStoreError>

Source

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.

Source

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.

Source

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.

Source

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".

Implementors§