Skip to main content

Parker Selbert



Oban - Recording Errors

Did you know that errors are recorded in the database when a job fails? A job's `errors` field contains a list of the time, attempt and a formatted error message for each failed attempt.
# Errors look like this, where `at` is a UTC timestamp and `error` is the blamed

# and formatted error message.

    "at" => "2021-02-11T17:01:13.517233Z",
    "attempt" => 1,
    "error" => "** (RuntimeError) Something went wrong!\n..."

# Check the errors for a job with multiple attempts to see if it failed before

# or it was snoozed.

def perform(%Job{attempt: attempt, errors: errors}) when attempt > 1 do
  case errors do
    [%{"error" => error} | _] ->
      IO.puts "This job failed with the error: " <> error
    [] ->
      IO.puts "This job snoozed, it doesn't have any errors"


© 2021 Zest Creative, LLC