Skip to main content

BackendIdlePool

Struct BackendIdlePool 

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

A bounded set of idle, authenticated backend connections, partitioned by connection identity. Cheap to clone-share behind an Arc.

Implementations§

Source§

impl BackendIdlePool

Source

pub fn new(max_idle_per_key: usize, max_total_idle: usize) -> Self

Create a pool that parks at most max_idle_per_key connections per (node,user,db) identity and max_total_idle across all identities. A floor of 1 is enforced on each so the pool always retains at least one reusable connection.

Source

pub fn checkout(&self, key: &str) -> Option<TcpStream>

Take a live idle connection for key, or None if the pool has no usable one (caller then dials a fresh connection). Dead/stale parked connections are evicted in passing.

Source

pub fn checkin(&self, key: &str, stream: TcpStream) -> bool

Park a (freshly reset) connection for reuse under key. Returns false when an idle cap (per-key OR global) is already reached — in that case the connection is dropped (closed) by being moved in and discarded, shedding excess capacity.

Source

pub fn reap_idle(&self, max_age: Duration) -> usize

Drop parked connections that have been idle longer than max_age so a connection the backend has (or will) close on its own idle timeout is not handed out stale, and idle capacity is released back to the OS. Returns the number reaped. Intended to be called periodically by a background task.

Source

pub fn idle_count(&self) -> usize

Total idle connections currently parked across all identities (O(1)).

Source

pub fn max_total_idle(&self) -> usize

Global ceiling on parked idle connections.

Source

pub fn reaped(&self) -> u64

Number of parked connections dropped by the idle reaper (TTL).

Source

pub fn reuses(&self) -> u64

Number of checkout hits (connections reused rather than dialed fresh).

Source

pub fn parked(&self) -> u64

Number of successful check-ins.

Source

pub fn over_capacity(&self) -> u64

Number of check-ins refused for exceeding the per-key idle cap.

Source

pub fn stale_evicted(&self) -> u64

Number of stale connections evicted at checkout.

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

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

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

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