Skip to main content

RetryPolicy

Struct RetryPolicy 

Source
pub struct RetryPolicy { /* private fields */ }
Expand description

Backoff policy for retrying transient RPC failures (Unavailable, DeadlineExceeded, and Aborted, which map to ClientError::Transport, plus ResourceExhausted, which maps to Overloaded; a Cancelled RPC also maps to Transport but is not retried).

Applies to enqueue, ack, nack, extend, and get-server-info — but not to reserve, which is a long poll. The default policy performs no retries (max_attempts == 1); opt in by building one up and passing it to SeppClientBuilder::retry_policy.

Retried enqueues can duplicate jobs that carry no idempotency key. To limit that hazard, an enqueue request in which any job lacks an idempotency key is not retried on the ambiguous-commit codes DeadlineExceeded and Aborted — the server may have already committed the batch — while Unavailable and ResourceExhausted (the request was rejected or never ran) stay retryable. When every job in the request carries an idempotency key, the server dedupes replays and the full transient set is retried.

use std::time::Duration;
use sepp_rs::client::RetryPolicy;

let policy = RetryPolicy::default()
    .with_max_attempts(5)
    .with_initial_backoff(Duration::from_millis(50))
    .with_max_backoff(Duration::from_secs(5));

Implementations§

Source§

impl RetryPolicy

Source

pub fn with_max_attempts(self, n: u32) -> Self

Sets the total number of attempts (including the first). Values below 1 are clamped to 1, so 1 means “no retries”.

Source

pub fn with_initial_backoff(self, d: Duration) -> Self

Sets the backoff before the first retry. Each subsequent retry multiplies this by with_multiplier, capped at with_max_backoff.

Source

pub fn with_max_backoff(self, d: Duration) -> Self

Caps the backoff between retries.

Source

pub fn with_multiplier(self, m: f64) -> Self

Sets the exponential growth factor for the backoff. Values below 1.0 are clamped to 1.0 (constant backoff).

Source

pub fn without_jitter(self) -> Self

Disables jitter. By default each delay is randomized within [0.5, 1.0) of its computed value to avoid thundering herds.

Source

pub fn max_attempts(&self) -> u32

Returns the configured number of attempts.

Trait Implementations§

Source§

impl Clone for RetryPolicy

Source§

fn clone(&self) -> RetryPolicy

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for RetryPolicy

Source§

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

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

impl Default for RetryPolicy

Source§

fn default() -> Self

Returns the “default value” for a type. 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
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FromRef<T> for T
where T: Clone,

Source§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
Source§

impl<T> FutureExt for T

Source§

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

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

fn with_current_context(self) -> WithContext<Self>

Attaches the current Context to this type, returning a WithContext wrapper. Read more
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> IntoRequest<T> for T

Source§

fn into_request(self) -> Request<T>

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

impl<L> LayerExt<L> for L

Source§

fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>
where L: Layer<S>,

Applies the layer to a service and wraps it in Layered.
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. 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.
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