mirror of
https://github.com/juspay/hyperswitch.git
synced 2025-11-01 11:06:50 +08:00
fix(redis): fix recreation on redis connection pool (#1063)
This commit is contained in:
@ -23,7 +23,6 @@ use storage_models::{enums as storage_enums, payment_method};
|
||||
use crate::scheduler::metrics as scheduler_metrics;
|
||||
use crate::{
|
||||
configs::settings,
|
||||
connection,
|
||||
core::{
|
||||
errors::{self, StorageErrorExt},
|
||||
payment_methods::{
|
||||
@ -1531,7 +1530,7 @@ pub async fn list_customer_payment_method(
|
||||
};
|
||||
customer_pms.push(pma.to_owned());
|
||||
|
||||
let redis_conn = connection::redis_connection(&state.conf).await;
|
||||
let redis_conn = state.store.get_redis_conn();
|
||||
let key_for_hyperswitch_token = format!(
|
||||
"pm_token_{}_{}_hyperswitch",
|
||||
parent_payment_method_token, pma.payment_method
|
||||
|
||||
@ -24,7 +24,6 @@ use self::{
|
||||
operations::{payment_complete_authorize, BoxedOperation, Operation},
|
||||
};
|
||||
use crate::{
|
||||
connection,
|
||||
core::{
|
||||
errors::{self, CustomResult, RouterResponse, RouterResult},
|
||||
payment_methods::vault,
|
||||
@ -672,7 +671,7 @@ async fn decide_payment_method_tokenize_action(
|
||||
}
|
||||
}
|
||||
Some(token) => {
|
||||
let redis_conn = connection::redis_connection(&state.conf).await;
|
||||
let redis_conn = state.store.get_redis_conn();
|
||||
let key = format!(
|
||||
"pm_token_{}_{}_{}",
|
||||
token.to_owned(),
|
||||
|
||||
@ -19,7 +19,7 @@ use super::{
|
||||
};
|
||||
use crate::{
|
||||
configs::settings::Server,
|
||||
connection, consts,
|
||||
consts,
|
||||
core::{
|
||||
errors::{self, CustomResult, RouterResult, StorageErrorExt},
|
||||
payment_methods::{cards, vault},
|
||||
@ -691,7 +691,7 @@ pub async fn make_pm_data<'a, F: Clone, R>(
|
||||
let request = &payment_data.payment_method_data;
|
||||
let token = payment_data.token.clone();
|
||||
let hyperswitch_token = if let Some(token) = token {
|
||||
let redis_conn = connection::redis_connection(&state.conf).await;
|
||||
let redis_conn = state.store.get_redis_conn();
|
||||
let key = format!(
|
||||
"pm_token_{}_{}_hyperswitch",
|
||||
token,
|
||||
|
||||
@ -25,7 +25,10 @@ use std::sync::Arc;
|
||||
|
||||
use futures::lock::Mutex;
|
||||
|
||||
use crate::{services::Store, types::storage};
|
||||
use crate::{
|
||||
services::{self, Store},
|
||||
types::storage,
|
||||
};
|
||||
|
||||
#[derive(PartialEq, Eq)]
|
||||
pub enum StorageImpl {
|
||||
@ -61,10 +64,10 @@ pub trait StorageInterface:
|
||||
+ refund::RefundInterface
|
||||
+ reverse_lookup::ReverseLookupInterface
|
||||
+ cards_info::CardsInfoInterface
|
||||
+ services::RedisConnInterface
|
||||
+ 'static
|
||||
{
|
||||
}
|
||||
|
||||
#[async_trait::async_trait]
|
||||
impl StorageInterface for Store {}
|
||||
|
||||
@ -117,4 +120,10 @@ where
|
||||
.change_context(redis_interface::errors::RedisError::JsonDeserializationFailed)
|
||||
}
|
||||
|
||||
impl services::RedisConnInterface for MockDb {
|
||||
fn get_redis_conn(&self) -> Arc<redis_interface::RedisConnectionPool> {
|
||||
self.redis.clone()
|
||||
}
|
||||
}
|
||||
|
||||
dyn_clone::clone_trait_object!(StorageInterface);
|
||||
|
||||
@ -78,6 +78,10 @@ impl PubSubInterface for redis_interface::RedisConnectionPool {
|
||||
}
|
||||
}
|
||||
|
||||
pub trait RedisConnInterface {
|
||||
fn get_redis_conn(&self) -> Arc<redis_interface::RedisConnectionPool>;
|
||||
}
|
||||
|
||||
#[derive(Clone)]
|
||||
pub struct Store {
|
||||
pub master_pool: PgPool,
|
||||
@ -185,3 +189,9 @@ impl Store {
|
||||
.change_context(crate::core::errors::StorageError::KVError)
|
||||
}
|
||||
}
|
||||
|
||||
impl RedisConnInterface for Store {
|
||||
fn get_redis_conn(&self) -> Arc<redis_interface::RedisConnectionPool> {
|
||||
self.redis_conn.clone()
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user