enum Error {
WorkerStopped,
Method(Method),
HeaderName(HeaderName),
HeaderValue(HeaderName),
HttpNotAllowed(Uri),
Transport {
kind: HttpErrorKind,
message: String,
},
ResponseBody(String),
IncompleteBody {
expected: u64,
received: u64,
},
UnexpectedTransferEncoding,
ReadTimeout,
HeadTimeout,
Response(Error),
}Expand description
Something that went wrong relaying a request through awc.
Variants§
WorkerStopped
Method(Method)
HeaderName(HeaderName)
HeaderValue(HeaderName)
HttpNotAllowed(Uri)
Transport
ResponseBody(String)
IncompleteBody
The remote under-delivered: awc ended the stream cleanly but fewer bytes arrived than the response’s Content-Length (a premature close awc reports as a clean EOF).
UnexpectedTransferEncoding
ReadTimeout
HeadTimeout
Response(Error)
Implementations§
Source§impl Error
impl Error
Sourcefn classify_send_error(err: &SendRequestError) -> HttpErrorKind
fn classify_send_error(err: &SendRequestError) -> HttpErrorKind
Maps an awc transport error to the object_store osc::HttpErrorKind that best describes it.
object_store’s retry loop — not this function — then decides retryability from that kind: it
retries Connect/Request unconditionally, Timeout/Interrupted only for idempotent
requests, and never Decode/Unknown
(https://github.com/apache/arrow-rs-object-store/blob/6c5b299d4274219ecd406cc4828b94efe4a14f8d/src/client/retry.rs#L394-L399).
We pick each kind so that decision matches what object_store’s own reqwest connector
(HttpError::reqwest) would produce for the equivalent failure.
Sourcefn classify_parse_error(err: &ParseError) -> HttpErrorKind
fn classify_parse_error(err: &ParseError) -> HttpErrorKind
Maps a response-head ParseError to the object_store kind.
awc surfaces a connection lost while the head is being received as a ParseError rather than
a Send/Connect error, so we treat those transport variants as retryable (matching reqwest)
and only a structurally invalid head as a non-retryable decode error.
Sourcefn classify_io_error(err: &Error) -> HttpErrorKind
fn classify_io_error(err: &Error) -> HttpErrorKind
Maps an I/O error by matching std::io::Error::kind(), the same conversion object_store’s
reqwest connector applies when it finds a std::io::Error in the error source chain
(HttpError::reqwest):
https://github.com/apache/arrow-rs-object-store/blob/6c5b299d4274219ecd406cc4828b94efe4a14f8d/src/client/http/connection.rs#L122-L132
Trait Implementations§
Source§impl Error for Error
impl Error for Error
Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
use the Display impl or to_string()
Source§impl From<SendRequestError> for Error
impl From<SendRequestError> for Error
Source§fn from(err: SendRequestError) -> Self
fn from(err: SendRequestError) -> Self
Wraps an awc send error, classifying it into the object_store osc::HttpErrorKind up front (the
error itself is !Sync and can’t be carried, so we keep only its message).
Auto Trait Implementations§
impl !Freeze for Error
impl RefUnwindSafe for Error
impl Send for Error
impl Sync for Error
impl Unpin for Error
impl UnsafeUnpin for Error
impl UnwindSafe for Error
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
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>
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>
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