pub enum JobError {
Retryable(Box<dyn Error + Send + Sync>),
Terminal(String),
}Expand description
Error type for job handlers — any error is retryable unless it’s terminal.
JobError::Retryable triggers retry with database-computed exponential backoff.
For explicit caller-controlled retry delay, return Ok(JobResult::RetryAfter) instead.
Variants§
Retryable(Box<dyn Error + Send + Sync>)
Retryable error — will be retried if attempts remain.
Terminal(String)
Terminal error — immediately fails the job regardless of remaining attempts.
Implementations§
Source§impl JobError
impl JobError
Sourcepub fn retryable(err: impl Error + Send + Sync + 'static) -> Self
pub fn retryable(err: impl Error + Send + Sync + 'static) -> Self
Create a retryable error from any std::error::Error.
Sourcepub fn retryable_msg(msg: impl Display) -> Self
pub fn retryable_msg(msg: impl Display) -> Self
Create a retryable error from a display message.
Use this with anyhow::Error or other types that implement Display
but not std::error::Error:
ⓘ
Err(JobError::retryable_msg(format!("{err:#}")))
// or with anyhow:
Err(JobError::retryable_msg(err))Trait Implementations§
Source§impl Error for JobError
impl Error for JobError
Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
Returns the lower-level source of this error, if any. Read more
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
👎Deprecated since 1.42.0:
use the Display impl or to_string()
Auto Trait Implementations§
impl !RefUnwindSafe for JobError
impl !UnwindSafe for JobError
impl Freeze for JobError
impl Send for JobError
impl Sync for JobError
impl Unpin for JobError
impl UnsafeUnpin for JobError
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
Source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more