pub enum Rejected {
Busy,
Closed,
Unavailable(String),
Failed(String),
}Expand description
Why an export could not be admitted. None of these is a partial success: OTLP forbids the client from retrying a partial success, so reporting overload that way permanently destroys the data and blames the sender.
The split between the last two is the whole of the failure contract. OTLP’s
retryable set is closed — gRPC UNAVAILABLE and friends, HTTP 429/502/503/504
— and an exporter handed anything outside it drops the batch on the floor. So
“we could not write it, try again” and “this export can never be written”
cannot share a variant, however similar they look from inside the flusher.
Variants§
Busy
Queue full. Transient; retry.
Closed
The engine is shutting down.
The block this export was in did not become durable — a full disk, an
EIO, a flush task that panicked. Nothing about the export caused it and
the next one may well land, so it is answered like Rejected::Busy.
Failed(String)
This export can never be stored: it does not fit an empty block. A retry produces the same answer, so the client must be told not to send one.
Auto Trait Implementations§
impl Freeze for Rejected
impl RefUnwindSafe for Rejected
impl Send for Rejected
impl Sync for Rejected
impl Unpin for Rejected
impl UnsafeUnpin for Rejected
impl UnwindSafe for Rejected
Blanket Implementations§
impl<T> Allocation for T
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request§impl<L> LayerExt<L> for L
impl<L> LayerExt<L> for L
§fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
Layered].