Skip to main content

SdkError

Enum SdkError 

Source
pub enum SdkError {
    Valkey(Error),
    ValkeyContext {
        source: Error,
        context: String,
    },
    Script(ScriptError),
    Config(String),
    WorkerAtCapacity,
    Http {
        source: Error,
        context: String,
    },
    AdminApi {
        status: u16,
        message: String,
        kind: Option<String>,
        retryable: Option<bool>,
        raw_body: String,
    },
}
Expand description

SDK error type.

Variants§

§

Valkey(Error)

Valkey connection or command error (preserves ErrorKind for caller inspection).

§

ValkeyContext

Valkey error with additional context.

Fields

§source: Error
§context: String
§

Script(ScriptError)

FlowFabric Lua script error.

§

Config(String)

Configuration error.

§

WorkerAtCapacity

Worker is at its configured max_concurrent_tasks capacity — the caller should retry later. Returned by FlowFabricWorker::claim_from_grant and FlowFabricWorker::claim_from_reclaim_grant when the concurrency semaphore is saturated. Distinct from Ok(None): a ClaimGrant/ReclaimGrant represents real work already selected by the scheduler, so silently dropping it would waste the grant and let the grant TTL elapse. Surfacing the saturation lets the caller release the grant (or wait + retry).

§Classification

  • SdkError::is_retryable returns true — saturation is transient: any in-flight task’s complete/fail/cancel/drop releases a permit. Retry after milliseconds, not a retry loop with backoff for a Valkey transport failure.
  • SdkError::valkey_kind returns None — this is not a Valkey transport or Lua error, so there is no ferriskey::ErrorKind to inspect. Callers that fan out on valkey_kind() should match WorkerAtCapacity explicitly (or use is_retryable()).
§

Http

HTTP transport error from the admin REST surface. Carries the underlying reqwest::Error via #[source] so callers can inspect is_timeout() / is_connect() / etc. for finer-grained retry logic. Distinct from SdkError::Valkey — this fires on the HTTP/JSON surface, not on the Lua/Valkey hot path.

Fields

§source: Error
§context: String
§

AdminApi

The admin REST endpoint returned a non-2xx response.

Fields surface the server-side ErrorBody JSON shape ({ error, kind?, retryable? }) as structured values so cairn-fabric and other consumers can match without re-parsing the body:

  • status — HTTP status code.
  • message — the error string from the JSON body (or the raw body if it didn’t parse as JSON).
  • kind — server-supplied Valkey ErrorKind label for 5xxs backed by a transport error; None for 4xxs.
  • retryable — server-supplied hint; None for 4xxs.
  • raw_body — the full response body, preserved for logging when the JSON shape doesn’t match.

Fields

§status: u16
§message: String
§retryable: Option<bool>
§raw_body: String

Implementations§

Source§

impl SdkError

Source

pub fn valkey_kind(&self) -> Option<ErrorKind>

Returns the underlying ferriskey ErrorKind if this error carries one. Covers transport variants (Valkey, ValkeyContext) directly and Script(ScriptError::Valkey(...)) via delegation.

Source

pub fn is_retryable(&self) -> bool

Whether this error is safely retryable by a caller. For transport variants, delegates to ff_script::retry::is_retryable_kind. For Script errors, returns true iff the Lua error’s classification is ErrorClass::Retryable. Config errors are never retryable.

Trait Implementations§

Source§

impl Debug for SdkError

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Display for SdkError

Source§

fn fmt(&self, __formatter: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Error for SdkError

Source§

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

👎Deprecated since 1.42.0:

use the Display impl or to_string()

1.0.0 · Source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0:

replaced by Error::source, which can support downcasting

Source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type-based access to context intended for error reports. Read more
Source§

impl From<Error> for SdkError

Source§

fn from(source: Error) -> Self

Converts to this type from the input type.
Source§

impl From<ScriptError> for SdkError

Source§

fn from(source: ScriptError) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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
Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T> ToStringFallible for T
where T: Display,

Source§

fn try_to_string(&self) -> Result<String, TryReserveError>

ToString::to_string, but without panic on OOM.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more