Skip to main content

OrchestratorError

Enum OrchestratorError 

Source
pub enum OrchestratorError {
    ChannelClosed,
    Inference(String),
    ConfigError(String),
    RateLimited {
        retry_after_secs: u64,
    },
    BudgetExceeded {
        spent: f64,
        limit: f64,
    },
    AuthFailed(String),
    InferenceTimeout {
        timeout_secs: u64,
    },
    Other(String),
}
Expand description

Orchestrator-specific errors.

All variants are non-panicking. Callers should match on the variant to decide whether to retry, shed, or propagate the error.

Variants§

§

ChannelClosed

A pipeline channel was closed before the request could be delivered.

This typically means a pipeline stage task has exited. The pipeline should be restarted. This error is not retryable within the same pipeline instance.

§

Inference(String)

An inference worker returned an error.

The inner string contains the provider error message. May be retryable depending on the underlying cause (transient network vs. invalid request).

§

ConfigError(String)

Pipeline or worker configuration is invalid.

Returned during startup validation. Not retryable without a config change.

§

RateLimited

Provider returned HTTP 429 — callers should back off for retry_after.

Fields

§retry_after_secs: u64

Seconds to wait before retrying, parsed from Retry-After header.

§

BudgetExceeded

Spending cap reached — no further inference allowed this session.

Fields

§spent: f64

Amount spent so far in USD.

§limit: f64

Configured spending limit in USD.

§

AuthFailed(String)

Provider rejected the request due to an authentication failure.

Returned when the provider returns HTTP 401 or 403. Not retryable without a credential rotation.

§

InferenceTimeout

The inference call exceeded the configured timeout and was cancelled.

The timeout_secs field reflects the timeout that was breached. Retryable with a longer timeout or by shedding the request.

Fields

§timeout_secs: u64

Configured timeout that was exceeded.

§

Other(String)

A catch-all error variant for errors that do not fit the other categories.

Implementations§

Source§

impl OrchestratorError

Source

pub fn error_kind(&self) -> &'static str

Return a stable lowercase string identifying the error variant, suitable for use as a metric label or structured log field.

§Panics

This function does not panic.

Source

pub fn is_retryable(&self) -> bool

Return true if retrying the request may succeed.

Transient errors (RateLimited, InferenceTimeout, Inference) are retryable. Permanent errors (ConfigError, AuthFailed, BudgetExceeded, ChannelClosed) are not.

§Panics

This function does not panic.

§Examples
use tokio_prompt_orchestrator::OrchestratorError;

assert!(OrchestratorError::RateLimited { retry_after_secs: 5 }.is_retryable());
assert!(!OrchestratorError::AuthFailed("bad key".into()).is_retryable());

Trait Implementations§

Source§

impl Debug for OrchestratorError

Source§

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

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

impl Display for OrchestratorError

Source§

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

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

impl Error for OrchestratorError

1.30.0 · 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

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
§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> FutureExt for T

§

fn with_context(self, otel_cx: Context) -> WithContext<Self>

Attaches the provided Context to this type, returning a WithContext wrapper. Read more
§

fn with_current_context(self) -> WithContext<Self>

Attaches the current Context to this type, returning a WithContext wrapper. Read more
§

impl<T> Instrument for T

§

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

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

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> IntoRequest<T> for T

Source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
§

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

§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + 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
§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + 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
§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
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, 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.
§

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

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self>

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