Skip to main content

ReconnectPolicy

Struct ReconnectPolicy 

Source
pub struct ReconnectPolicy {
    pub initial_delay: Duration,
    pub max_delay: Duration,
    pub multiplier: f64,
    pub max_attempts: Option<u32>,
    pub jitter: bool,
}
Expand description

Exponential-backoff policy used by TaskHubGrpcWorker when the sidecar is unavailable.

The worker applies this policy for both the initial connection attempt and every subsequent reconnect after the gRPC stream drops. On a successful connection the delay is reset to initial_delay.

§Delay calculation

delay[0] = initial_delay
delay[n] = min(delay[n-1] * multiplier, max_delay) ± jitter

Jitter (when enabled) adds a uniformly-distributed ±10 % random offset to each delay, which reduces “thundering herd” reconnects in environments with many workers.

§Examples

use std::time::Duration;
use dapr_durabletask::worker::ReconnectPolicy;

// Fast reconnect for development (no jitter, 2 max attempts):
let policy = ReconnectPolicy::new()
    .with_initial_delay(Duration::from_millis(200))
    .with_max_delay(Duration::from_secs(5))
    .with_multiplier(2.0)
    .with_max_attempts(2);

// Production policy with jitter:
let policy = ReconnectPolicy::new()
    .with_initial_delay(Duration::from_secs(1))
    .with_max_delay(Duration::from_secs(60))
    .with_multiplier(1.5)
    .with_jitter(true);

Fields§

§initial_delay: Duration

Delay before the first reconnect attempt. Defaults to 1 s.

§max_delay: Duration

Upper bound on the delay between reconnect attempts. Defaults to 30 s.

§multiplier: f64

Multiplier applied to the current delay after each failed attempt. Must be ≥ 1.0. Defaults to 1.5.

§max_attempts: Option<u32>

Maximum number of reconnect attempts before start() returns an error. None means retry indefinitely. Defaults to None.

§jitter: bool

When true, add a uniformly-distributed ±10 % random offset to each delay. Defaults to true.

Implementations§

Source§

impl ReconnectPolicy

Source

pub fn new() -> Self

Create a policy with default values.

Source

pub fn with_initial_delay(self, delay: Duration) -> Self

Set the initial delay before the first reconnect attempt.

Source

pub fn with_max_delay(self, max: Duration) -> Self

Set the maximum delay between reconnect attempts.

Source

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

Set the backoff multiplier (must be ≥ 1.0).

Source

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

Set the maximum number of reconnect attempts. None retries indefinitely.

Source

pub fn with_jitter(self, jitter: bool) -> Self

Enable or disable ±10 % random jitter on each delay.

Trait Implementations§

Source§

impl Clone for ReconnectPolicy

Source§

fn clone(&self) -> ReconnectPolicy

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 ReconnectPolicy

Source§

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

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

impl Default for ReconnectPolicy

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