Jidoka.Session.Lease (Jidoka v0.9.0)

Copy Markdown View Source

Durable ownership token for one active session continuation.

A store grants one lease at a time. Every durable checkpoint and final commit must present the same lease id. An expired lease can be replaced by recovery.

Summary

Functions

Builds a new lease for one request.

Returns true when the lease has reached its expiry time.

Builds a session lease from keyword or map attributes.

Extends a lease from the given wall-clock time.

Returns the Zoi schema for a session lease.

Types

t()

@type t() :: %Jidoka.Session.Lease{
  acquired_at_ms: integer(),
  expires_at_ms: integer(),
  lease_id: binary(),
  owner_id: binary(),
  request_id: binary()
}

Functions

acquire(request_id, now_ms, ttl_ms, opts \\ [])

@spec acquire(String.t(), non_neg_integer(), pos_integer(), keyword()) ::
  {:ok, t()} | {:error, term()}

Builds a new lease for one request.

expired?(lease, now_ms)

@spec expired?(t(), non_neg_integer()) :: boolean()

Returns true when the lease has reached its expiry time.

new(attrs)

@spec new(keyword() | map()) :: {:ok, t()} | {:error, term()}

Builds a session lease from keyword or map attributes.

renew(lease, now_ms, ttl_ms)

@spec renew(t(), non_neg_integer(), pos_integer()) :: t()

Extends a lease from the given wall-clock time.

schema()

@spec schema() :: Zoi.schema()

Returns the Zoi schema for a session lease.