Skip to main content

LocalContinuityStore

Struct LocalContinuityStore 

Source
pub struct LocalContinuityStore { /* private fields */ }
Expand description

SQLite-backed ContinuityStore for the bundled persistent_state(path) path.

Stores ContinuityRecords and SessionSnapshots in a single SQLite database. Enforces compare-and-set on (fencing_token, checkpoint_version).

Implementations§

Source§

impl LocalContinuityStore

Source

pub fn open(path: impl AsRef<Path>) -> Result<Self, ContinuityStoreError>

Open (or create) a local continuity store at the given path.

§Errors

Returns ContinuityStoreError::Io if the database cannot be opened or the schema cannot be initialized.

Source

pub fn in_memory() -> Result<Self, ContinuityStoreError>

Open an in-memory store (for testing).

§Errors

Returns ContinuityStoreError::Io if initialization fails.

Source

pub fn max_fencing_token(&self) -> Result<u64, ContinuityStoreError>

The highest fencing token ever committed to this store, across BOTH continuity_records and session_snapshots (0 if the store is empty).

The bundled LocalLeaseProvider seeds its monotonic counter from this on startup so fencing tokens keep advancing across process restarts. Without it the provider’s in-memory counter resets to 1 and restore presents a stale token that this store’s compare-and-set rejects — the v0.7.8 “stale fencing token: presented 1, current N” restart abort.

§Errors

Returns ContinuityStoreError::Io on a query failure.

Trait Implementations§

Source§

impl ContinuityStore for LocalContinuityStore

Source§

fn resolve_many<'life0, 'life1, 'async_trait>( &'life0 self, identities: &'life1 [AgentIdentity], ) -> Pin<Box<dyn Future<Output = Result<BTreeMap<AgentIdentity, ContinuityResolveState>, ContinuityStoreError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Resolve continuity state for the given identities. Read more
Source§

fn load_session_snapshot<'life0, 'life1, 'async_trait>( &'life0 self, session_id: &'life1 SessionId, ) -> Pin<Box<dyn Future<Output = Result<Option<SessionSnapshot>, ContinuityStoreError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Load a previously saved session snapshot.
Source§

fn delete_session_snapshot_if_current_revision<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, session_id: &'life1 SessionId, expected_current_revision: &'life2 str, ) -> Pin<Box<dyn Future<Output = Result<bool, ContinuityStoreError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Delete a saved session snapshot only if its serialized session projection still matches expected_current_revision. Read more
Source§

fn save_session_snapshot<'life0, 'life1, 'life2, 'life3, 'async_trait>( &'life0 self, identity: &'life1 AgentIdentity, session_id: &'life2 SessionId, generation: ContinuityGeneration, version: CheckpointVersion, fencing_token: FencingToken, snapshot: &'life3 SessionSnapshot, ) -> Pin<Box<dyn Future<Output = Result<(), ContinuityStoreError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'life3: 'async_trait,

Save a session snapshot with fencing and identity-generation version preconditions.
Source§

fn upsert_continuity_record<'life0, 'life1, 'async_trait>( &'life0 self, record: &'life1 ContinuityRecord, fencing_token: FencingToken, ) -> Pin<Box<dyn Future<Output = Result<(), ContinuityStoreError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Upsert a continuity record with fencing precondition. Read more
Source§

fn delete_continuity_record<'life0, 'life1, 'async_trait>( &'life0 self, identity: &'life1 AgentIdentity, fencing_token: FencingToken, ) -> Pin<Box<dyn Future<Output = Result<(), ContinuityStoreError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Delete a continuity record and associated session snapshots. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<A, B, T> HttpServerConnExec<A, B> for T
where B: Body,

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more