Import upstream v0.16.22, stripped
Upstream commit: 474dd0229cb20cf513036619781ed97bd8073c3f Enterprise-only files removed or emptied: 63 Enterprise-only snippets removed: 117 in 50 files Dangling module declarations removed: 5 Cargo edits turning enterprise off: 14 Verification: clean Enterprise feature gates left for rebuilt features: 19 in 18 files Produced by tools/fork/strip.py. The full report is in docs/fork/strip-reports/ on main.
This commit is contained in:
@@ -0,0 +1,87 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2020 Stalwart Labs LLC <[email protected]>
|
||||
*
|
||||
* SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-SEL
|
||||
*/
|
||||
|
||||
use super::{
|
||||
RedisClusterConnectionManager, RedisConnectionManager, RedisSentinelConnectionManager,
|
||||
into_error,
|
||||
};
|
||||
use deadpool::managed;
|
||||
use redis::{
|
||||
aio::{ConnectionLike, MultiplexedConnection},
|
||||
cluster_async::ClusterConnection,
|
||||
};
|
||||
|
||||
impl managed::Manager for RedisConnectionManager {
|
||||
type Type = MultiplexedConnection;
|
||||
type Error = trc::Error;
|
||||
|
||||
async fn create(&self) -> Result<MultiplexedConnection, trc::Error> {
|
||||
match tokio::time::timeout(self.timeout, self.client.get_multiplexed_async_connection())
|
||||
.await
|
||||
{
|
||||
Ok(conn) => conn.map_err(into_error),
|
||||
Err(_) => Err(trc::StoreEvent::RedisError.ctx(trc::Key::Details, "Connection Timeout")),
|
||||
}
|
||||
}
|
||||
|
||||
async fn recycle(
|
||||
&self,
|
||||
conn: &mut MultiplexedConnection,
|
||||
_: &managed::Metrics,
|
||||
) -> managed::RecycleResult<trc::Error> {
|
||||
conn.req_packed_command(&redis::cmd("PING"))
|
||||
.await
|
||||
.map(|_| ())
|
||||
.map_err(|err| managed::RecycleError::Backend(into_error(err)))
|
||||
}
|
||||
}
|
||||
|
||||
impl managed::Manager for RedisClusterConnectionManager {
|
||||
type Type = ClusterConnection;
|
||||
type Error = trc::Error;
|
||||
|
||||
async fn create(&self) -> Result<ClusterConnection, trc::Error> {
|
||||
match tokio::time::timeout(self.timeout, self.client.get_async_connection()).await {
|
||||
Ok(conn) => conn.map_err(into_error),
|
||||
Err(_) => Err(trc::StoreEvent::RedisError.ctx(trc::Key::Details, "Connection Timeout")),
|
||||
}
|
||||
}
|
||||
|
||||
async fn recycle(
|
||||
&self,
|
||||
conn: &mut ClusterConnection,
|
||||
_: &managed::Metrics,
|
||||
) -> managed::RecycleResult<trc::Error> {
|
||||
conn.req_packed_command(&redis::cmd("PING"))
|
||||
.await
|
||||
.map(|_| ())
|
||||
.map_err(|err| managed::RecycleError::Backend(into_error(err)))
|
||||
}
|
||||
}
|
||||
|
||||
impl managed::Manager for RedisSentinelConnectionManager {
|
||||
type Type = MultiplexedConnection;
|
||||
type Error = trc::Error;
|
||||
|
||||
async fn create(&self) -> Result<MultiplexedConnection, trc::Error> {
|
||||
let mut client = self.client.lock().await;
|
||||
match tokio::time::timeout(self.timeout, client.get_async_connection()).await {
|
||||
Ok(conn) => conn.map_err(into_error),
|
||||
Err(_) => Err(trc::StoreEvent::RedisError.ctx(trc::Key::Details, "Connection Timeout")),
|
||||
}
|
||||
}
|
||||
|
||||
async fn recycle(
|
||||
&self,
|
||||
conn: &mut MultiplexedConnection,
|
||||
_: &managed::Metrics,
|
||||
) -> managed::RecycleResult<trc::Error> {
|
||||
conn.req_packed_command(&redis::cmd("PING"))
|
||||
.await
|
||||
.map(|_| ())
|
||||
.map_err(|err| managed::RecycleError::Backend(into_error(err)))
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user