Behaviour and delegator for durable session storage.
Store implementations persist Jidoka.Session.Data values. Lease-aware
stores also provide atomic claim, checkpoint, commit, renewal, and recovery
transitions. Runtime clients and provider credentials never enter the store.
Summary
Callbacks
Atomically records a snapshot under an active lease.
Atomically claims a hibernated session for resume.
Atomically claims a session for a new request.
Atomically commits final session state and releases its lease.
Loads a session by its identifier.
Lists the sessions available to the store.
Persists a caller-managed or inactive session.
Atomically replaces an expired lease for crash recovery.
Atomically extends an active lease.
Functions
Persists one in-run snapshot under the current lease.
Claims a stored hibernated session for one resume worker.
Claims a session for one new request and rejects concurrent use.
Commits terminal or hibernated state under the current lease.
Loads a session through a store module or configured store tuple.
Lists sessions whose worker lease expired and which have a snapshot.
Lists sessions through a store module or configured store tuple.
Lists pending review requests across stored sessions.
Persists a session through a store module or configured store tuple.
Replaces an expired lease and returns a crash-recoverable session.
Extends the current session lease.
Types
Callbacks
@callback checkpoint_session(String.t(), String.t(), Jidoka.Snapshot.t(), keyword()) :: {:ok, Jidoka.Session.Data.t()} | {:error, term()}
Atomically records a snapshot under an active lease.
@callback claim_resume( String.t(), keyword() ) :: {:ok, Jidoka.Session.Data.t()} | {:error, term()}
Atomically claims a hibernated session for resume.
@callback claim_session(String.t(), Jidoka.Turn.Request.t(), keyword()) :: {:ok, Jidoka.Session.Data.t()} | {:error, term()}
Atomically claims a session for a new request.
@callback commit_session(String.t(), String.t(), Jidoka.Session.Data.t(), keyword()) :: {:ok, Jidoka.Session.Data.t()} | {:error, term()}
Atomically commits final session state and releases its lease.
@callback get_session( String.t(), keyword() ) :: {:ok, Jidoka.Session.Data.t()} | {:error, term()}
Loads a session by its identifier.
@callback list_sessions(keyword()) :: {:ok, [Jidoka.Session.Data.t()]} | {:error, term()}
Lists the sessions available to the store.
@callback put_session( Jidoka.Session.Data.t(), keyword() ) :: {:ok, Jidoka.Session.Data.t()} | {:error, term()}
Persists a caller-managed or inactive session.
@callback recover_session( String.t(), keyword() ) :: {:ok, Jidoka.Session.Data.t()} | {:error, term()}
Atomically replaces an expired lease for crash recovery.
@callback renew_session(String.t(), String.t(), keyword()) :: {:ok, Jidoka.Session.Data.t()} | {:error, term()}
Atomically extends an active lease.
Functions
@spec checkpoint_session( store(), String.t(), String.t(), Jidoka.Snapshot.t(), keyword() ) :: {:ok, Jidoka.Session.Data.t()} | {:error, term()}
Persists one in-run snapshot under the current lease.
@spec claim_resume(store(), String.t(), keyword()) :: {:ok, Jidoka.Session.Data.t()} | {:error, term()}
Claims a stored hibernated session for one resume worker.
@spec claim_session(store(), String.t(), Jidoka.Turn.Request.t(), keyword()) :: {:ok, Jidoka.Session.Data.t()} | {:error, term()}
Claims a session for one new request and rejects concurrent use.
@spec commit_session( store(), String.t(), String.t(), Jidoka.Session.Data.t(), keyword() ) :: {:ok, Jidoka.Session.Data.t()} | {:error, term()}
Commits terminal or hibernated state under the current lease.
@spec get_session(store(), String.t()) :: {:ok, Jidoka.Session.Data.t()} | {:error, term()}
Loads a session through a store module or configured store tuple.
@spec list_recoverable( store(), keyword() ) :: {:ok, [Jidoka.Session.Data.t()]} | {:error, term()}
Lists sessions whose worker lease expired and which have a snapshot.
@spec list_sessions(store()) :: {:ok, [Jidoka.Session.Data.t()]} | {:error, term()}
Lists sessions through a store module or configured store tuple.
@spec pending_reviews(store()) :: {:ok, [Jidoka.Review.Request.t()]} | {:error, term()}
Lists pending review requests across stored sessions.
@spec put_session(store(), Jidoka.Session.Data.t()) :: {:ok, Jidoka.Session.Data.t()} | {:error, term()}
Persists a session through a store module or configured store tuple.
@spec recover_session(store(), String.t(), keyword()) :: {:ok, Jidoka.Session.Data.t()} | {:error, term()}
Replaces an expired lease and returns a crash-recoverable session.
@spec renew_session(store(), String.t(), String.t(), keyword()) :: {:ok, Jidoka.Session.Data.t()} | {:error, term()}
Extends the current session lease.