quasar_jobs/job

Durable job values and their state machine.

Types

Capability for one claim. The owner nonce changes even across manual retries. Generation is the attempt number; both fields must match atomically.

pub opaque type ExecutionToken
pub opaque type Job
pub type JobError {
  JobError(kind: String, message: String)
}

Constructors

  • JobError(kind: String, message: String)
pub opaque type JobId
pub opaque type NewJob
pub type Status {
  Available
  Scheduled
  Executing
  Completed
  Retryable
  Discarded
  Cancelled
}

Constructors

  • Available
  • Scheduled
  • Executing
  • Completed
  • Retryable
  • Discarded
  • Cancelled
pub type TransitionError {
  InvalidTransition(from: Status, operation: String)
  InvalidJob(String)
  StaleExecution
}

Constructors

  • InvalidTransition(from: Status, operation: String)
  • InvalidJob(String)
  • StaleExecution

Values

pub fn attempt(job: Job) -> Int
pub fn attempted_at(job: Job) -> option.Option(Int)
pub fn available_at(job: Job) -> Int
pub fn cancel(job: Job) -> Result(Job, TransitionError)
pub fn claim(
  job: Job,
  owner: String,
  now: Int,
  lease_expires_at: Int,
) -> Result(Job, TransitionError)
pub fn complete(
  job: Job,
  now: Int,
) -> Result(Job, TransitionError)
pub fn completed_at(job: Job) -> option.Option(Int)
pub fn encoded_payload(new_job: NewJob) -> String
pub fn error(job: Job) -> option.Option(JobError)
pub fn error_kind(error: JobError) -> String
pub fn error_message(error: JobError) -> String
pub fn execution_token(
  item: Job,
) -> Result(ExecutionToken, TransitionError)
pub fn fail(
  job: Job,
  error: JobError,
  available_at: Int,
) -> Result(Job, TransitionError)
pub fn id(job: Job) -> JobId
pub fn id_to_string(id: JobId) -> String
pub fn id_value(id: JobId) -> Int
pub fn inserted_at(job: Job) -> Int
pub fn lease_expires_at(job: Job) -> option.Option(Int)
pub fn lease_owner(job: Job) -> option.Option(String)
pub fn materialise(
  new_job: NewJob,
  id: JobId,
  queue: String,
  available_at: Int,
  now: Int,
) -> Result(Job, TransitionError)
pub fn max_attempts(job: Job) -> Int
pub fn new_id(value: Int) -> JobId
pub fn new_job(
  worker: String,
  payload: String,
  priority: Int,
  max_attempts: Int,
) -> NewJob
pub fn new_job_max_attempts(new_job: NewJob) -> Int
pub fn new_job_priority(new_job: NewJob) -> Int
pub fn owns(item: Job, token: ExecutionToken) -> Bool
pub fn payload(job: Job) -> String
pub fn priority(job: Job) -> Int
pub fn queue(job: Job) -> String
pub fn ready(job: Job, queue: String, now: Int) -> Bool
pub fn recover_if_expired(job: Job, now: Int) -> Job
pub fn restore(
  id: JobId,
  queue: String,
  worker: String,
  payload: String,
  status: Status,
  priority: Int,
  attempt: Int,
  max_attempts: Int,
  available_at: Int,
  inserted_at: Int,
  attempted_at: option.Option(Int),
  completed_at: option.Option(Int),
  lease_owner: option.Option(String),
  lease_expires_at: option.Option(Int),
  error_kind: option.Option(String),
  error_message: option.Option(String),
) -> Job
pub fn retry(job: Job, now: Int) -> Result(Job, TransitionError)
pub fn set_lease_expiry(job: Job, expires_at: Int) -> Job
pub fn status(job: Job) -> Status
pub fn status_from_string(
  status: String,
) -> Result(Status, String)
pub fn status_to_string(status: Status) -> String
pub fn token_generation(token: ExecutionToken) -> Int
pub fn token_id(token: ExecutionToken) -> JobId
pub fn token_owner(token: ExecutionToken) -> String
pub fn validate(new_job: NewJob) -> Result(Nil, TransitionError)
pub fn with_max_attempts(
  new_job: NewJob,
  max_attempts: Int,
) -> NewJob

Changes the maximum number of execution attempts.

pub fn with_priority(new_job: NewJob, priority: Int) -> NewJob

Changes the priority used when a store claims ready jobs.

pub fn worker(job: Job) -> String
pub fn worker_name(new_job: NewJob) -> String
Search Document