Struct ClientBuilder

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

Client builder.

Implementations§

Source§

impl ClientBuilder

Source

pub fn table_name(self, table_name: impl Into<String>) -> Self

Sets the lease table name where the lease info will be stored. The table must have the correct schema.

Default "leases".

Source

pub fn lease_ttl_seconds(self, seconds: u32) -> Self

Sets the time to live for each lease (or lease extension) in seconds. Must be at least 2.

Note: Time to live is implemented using the native dynamodb feature. As this is based on unix timestamps the unit is seconds. This makes extending ttls lower than 2s not reliable.

Note: A crate::Lease will attempt to extend itself in the background until dropped and then release itself. However, since db comms failing after acquiring a lease is possible, this ttl is the guaranteed lifetime of a lease. As such, and since ttl is not in normal operation relied upon to release leases, it may make sense to set this higher than the max operation time the lease is wrapping.

So, for example, if the locked task can take 1s to 5m a ttl of 10m should provide a decent guarantee that such tasks will never execute concurrently. In normal operation each lease will release (be deleted) immediately after dropping, so having a high ttl only affects the edge case where the extend/drop db interactions fail.

Default 60.

§Panics

Panics if less than 2s.

Source

pub fn extend_every(self, extend_period: Duration) -> Self

Sets the periodic duration between each background attempt to extend the lease. These happen continually while the crate::Lease is alive.

Each extension renews the lease to the full ttl. This duration must be less than the ttl.

Default lease_ttl_seconds / 2.

§Panics

Panics if zero.

Source

pub fn acquire_cooldown(self, cooldown: Duration) -> Self

Sets how long Client::acquire waits between attempts to acquire a lease.

Default 1s.

Source

pub async fn build_and_check_db(self, dynamodb_client: Client) -> Result<Client>

Builds a Client and checks the dynamodb table is active with the correct schema.

§Panics

Panics if extend_period is not less than lease_ttl_seconds.

Trait Implementations§

Source§

impl Default for ClientBuilder

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

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<Unshared, Shared> IntoShared<Shared> for Unshared
where Shared: FromUnshared<Unshared>,

Source§

fn into_shared(self) -> Shared

Creates a shared type from an unshared type.
Source§

impl<T> Same for T

Source§

type Output = T

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