pub struct ConnectionPool<DB>where
DB: DbMarker,{ /* private fields */ }
Expand description
Pool of reusable database connections.
Implementations§
Source§impl<DB> ConnectionPool<DB>where
DB: DbMarker,
impl<DB> ConnectionPool<DB>where
DB: DbMarker,
Sourcepub fn global_config() -> &'static GlobalConnectionPoolConfig
pub fn global_config() -> &'static GlobalConnectionPoolConfig
Returns a reference to the global configuration parameters applied for all DB pools. For consistency, these parameters should be changed early in the app life cycle.
Sourcepub async fn test_pool() -> ConnectionPool<DB>
pub async fn test_pool() -> ConnectionPool<DB>
Creates a test pool with a reasonably large number of connections.
Test pools trace their active connections. If acquiring a connection fails (e.g., with a timeout), the returned error will contain information on all active connections.
Sourcepub async fn constrained_test_pool(connections: u32) -> ConnectionPool<DB>
pub async fn constrained_test_pool(connections: u32) -> ConnectionPool<DB>
Same as Self::test_pool()
, but with a configurable number of connections. This is useful to test
behavior of components that rely on singleton / constrained pools in production.
Sourcepub fn builder(
database_url: SensitiveUrl,
max_pool_size: u32,
) -> ConnectionPoolBuilder<DB>
pub fn builder( database_url: SensitiveUrl, max_pool_size: u32, ) -> ConnectionPoolBuilder<DB>
Initializes a builder for connection pools.
Sourcepub fn singleton(database_url: SensitiveUrl) -> ConnectionPoolBuilder<DB>
pub fn singleton(database_url: SensitiveUrl) -> ConnectionPoolBuilder<DB>
Initializes a builder for connection pools with a single connection. This is equivalent
to calling Self::builder(db_url, 1)
.
Sourcepub fn database_url(&self) -> &SensitiveUrl
pub fn database_url(&self) -> &SensitiveUrl
Returns database URL for this pool. It may include authentication info, so be mindful of outputting it into logs etc.
Sourcepub fn max_size(&self) -> u32
pub fn max_size(&self) -> u32
Returns the maximum number of connections in this pool specified during its creation. This number may be distinct from the current number of connections in the pool (including idle ones).
Sourcepub async fn connection(&self) -> Result<Connection<'_, DB>, DalError>
pub async fn connection(&self) -> Result<Connection<'_, DB>, DalError>
Creates a Connection
entity over a recoverable connection.
Upon a database outage connection will block the thread until
it will be able to recover the connection (or, if connection cannot
be restored after several retries, this will be considered as
irrecoverable database error and result in panic).
This method is intended to be used in crucial contexts, where the database access is must-have (e.g. block committer).
Sourcepub fn connection_tagged(
&self,
requester: &'static str,
) -> impl Future<Output = Result<Connection<'_, DB>, DalError>>
pub fn connection_tagged( &self, requester: &'static str, ) -> impl Future<Output = Result<Connection<'_, DB>, DalError>>
A version of connection
that would also expose the duration of the connection
acquisition tagged to the requester
name. It also tracks the caller location for the purposes
of logging (e.g., long-living connections) and debugging (when used with a test connection pool).
WARN: This method should not be used if it will result in too many time series (e.g. from witness generators or provers), otherwise Prometheus won’t be able to handle it.
Trait Implementations§
Source§impl<DB> Clone for ConnectionPool<DB>
impl<DB> Clone for ConnectionPool<DB>
Source§fn clone(&self) -> ConnectionPool<DB>
fn clone(&self) -> ConnectionPool<DB>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreAuto Trait Implementations§
impl<DB> Freeze for ConnectionPool<DB>
impl<DB> !RefUnwindSafe for ConnectionPool<DB>
impl<DB> Send for ConnectionPool<DB>
impl<DB> Sync for ConnectionPool<DB>
impl<DB> Unpin for ConnectionPool<DB>where
DB: Unpin,
impl<DB> !UnwindSafe for ConnectionPool<DB>
Blanket Implementations§
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
Source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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 moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T
in a tonic::Request