quasar_jobs/store
Store port for durable state. Implementations provide atomic transitions. Resource ownership remains with the application that opened the Store.
Types
pub type Completion {
Completion(token: job.ExecutionToken, completed_at: Int)
}
Constructors
-
Completion(token: job.ExecutionToken, completed_at: Int)
pub type Error {
Unavailable
Timeout
NotFound
InvalidTransition(job.TransitionError)
StaleExecution
}
Constructors
-
Unavailable -
Timeout -
NotFound -
InvalidTransition(job.TransitionError) -
StaleExecution
pub type Failure {
Failure(
token: job.ExecutionToken,
error: job.JobError,
available_at: Int,
)
}
Constructors
-
Failure( token: job.ExecutionToken, error: job.JobError, available_at: Int, )
Values
pub fn claim(
store: Store,
queue: String,
limit: Int,
owner: String,
now: Int,
lease_ms: Int,
) -> Result(List(job.Job), Error)
The owner argument is a diagnostic prefix. Each call adds a fresh nonce; adapters must preserve it and atomically match owner AND attempt for every execution mutation. This also fences attempts after a manual retry reset.
pub fn close(store: Store) -> Result(Nil, Error)
Releases only resources created by this adapter. Borrowed resources (such as a Pog pool passed to quasar_postgres.new) are never stopped. Quasar never invokes close: the application calls it after all runtimes and commands using this Store have finished.
pub fn complete(
store: Store,
token: job.ExecutionToken,
now: Int,
) -> Result(job.Job, Error)
pub fn complete_many(
store: Store,
completions: List(Completion),
) -> Result(List(job.Job), Error)
pub fn completion_time(completion: Completion) -> Int
pub fn completion_token(
completion: Completion,
) -> job.ExecutionToken
pub fn fail(
store: Store,
token: job.ExecutionToken,
error: job.JobError,
available_at: Int,
) -> Result(job.Job, Error)
pub fn failure_available_at(failure: Failure) -> Int
pub fn failure_error(failure: Failure) -> job.JobError
pub fn failure_token(failure: Failure) -> job.ExecutionToken
pub fn from_operations(
insert insert: fn(job.NewJob, String, Int, Int) -> Result(
job.JobId,
Error,
),
get get: fn(job.JobId) -> Result(job.Job, Error),
claim claim: fn(String, Int, String, Int, Int) -> Result(
List(job.Job),
Error,
),
complete complete: fn(job.ExecutionToken, Int) -> Result(
job.Job,
Error,
),
fail fail: fn(job.ExecutionToken, job.JobError, Int) -> Result(
job.Job,
Error,
),
cancel cancel: fn(job.JobId) -> Result(job.Job, Error),
retry retry: fn(job.JobId, Int) -> Result(job.Job, Error),
renew_lease renew_lease: fn(job.ExecutionToken, Int) -> Result(
job.Job,
Error,
),
close close: fn() -> Result(Nil, Error),
) -> Store
pub fn from_operations_with_all_batches(
insert insert: fn(job.NewJob, String, Int, Int) -> Result(
job.JobId,
Error,
),
insert_many insert_many: fn(List(job.NewJob), String, Int, Int) -> Result(
List(job.JobId),
Error,
),
get get: fn(job.JobId) -> Result(job.Job, Error),
claim claim: fn(String, Int, String, Int, Int) -> Result(
List(job.Job),
Error,
),
complete complete: fn(job.ExecutionToken, Int) -> Result(
job.Job,
Error,
),
complete_many complete_many: fn(List(Completion)) -> Result(
List(job.Job),
Error,
),
fail fail: fn(job.ExecutionToken, job.JobError, Int) -> Result(
job.Job,
Error,
),
fail_many fail_many: fn(List(Failure)) -> Result(
List(job.Job),
Error,
),
cancel cancel: fn(job.JobId) -> Result(job.Job, Error),
retry retry: fn(job.JobId, Int) -> Result(job.Job, Error),
renew_lease renew_lease: fn(job.ExecutionToken, Int) -> Result(
job.Job,
Error,
),
close close: fn() -> Result(Nil, Error),
) -> Store
pub fn from_operations_with_batch(
insert insert: fn(job.NewJob, String, Int, Int) -> Result(
job.JobId,
Error,
),
get get: fn(job.JobId) -> Result(job.Job, Error),
claim claim: fn(String, Int, String, Int, Int) -> Result(
List(job.Job),
Error,
),
complete complete: fn(job.ExecutionToken, Int) -> Result(
job.Job,
Error,
),
complete_many complete_many: fn(List(Completion)) -> Result(
List(job.Job),
Error,
),
fail fail: fn(job.ExecutionToken, job.JobError, Int) -> Result(
job.Job,
Error,
),
fail_many fail_many: fn(List(Failure)) -> Result(
List(job.Job),
Error,
),
cancel cancel: fn(job.JobId) -> Result(job.Job, Error),
retry retry: fn(job.JobId, Int) -> Result(job.Job, Error),
renew_lease renew_lease: fn(job.ExecutionToken, Int) -> Result(
job.Job,
Error,
),
close close: fn() -> Result(Nil, Error),
) -> Store
pub fn insert(
store: Store,
new_job: job.NewJob,
queue: String,
available_at: Int,
now: Int,
) -> Result(job.JobId, Error)
pub fn insert_many(
store: Store,
jobs: List(job.NewJob),
queue: String,
available_at: Int,
now: Int,
) -> Result(List(job.JobId), Error)
pub fn renew_lease(
store: Store,
token: job.ExecutionToken,
expires_at: Int,
) -> Result(job.Job, Error)