diff --git a/config/application.yml.default b/config/application.yml.default index 5ea870d40fc..d37b63909ea 100644 --- a/config/application.yml.default +++ b/config/application.yml.default @@ -234,6 +234,7 @@ redis_irs_attempt_api_url: redis://localhost:6379/2 redis_throttle_url: redis://localhost:6379/1 redis_url: redis://localhost:6379/0 redis_pool_size: 10 +redis_session_pool_size: 10 redis_throttle_pool_size: 5 reg_confirmed_email_max_attempts: 20 reg_confirmed_email_window_in_minutes: 60 diff --git a/config/initializers/redis.rb b/config/initializers/redis.rb index 4edf5057a37..f7b166a38a7 100644 --- a/config/initializers/redis.rb +++ b/config/initializers/redis.rb @@ -11,3 +11,10 @@ redis: Redis.new(url: IdentityConfig.store.redis_throttle_url), ) end + +REDIS_SESSION_POOL_WRAPPER = ConnectionPool::Wrapper.new( + size: IdentityConfig.store.redis_session_pool_size, +) do + # redis-session-store does its own namespacing in session_store.rb + Redis.new(url: IdentityConfig.store.redis_url) +end diff --git a/config/initializers/session_store.rb b/config/initializers/session_store.rb index ac1b4f63e7f..a1c3ab5bbca 100644 --- a/config/initializers/session_store.rb +++ b/config/initializers/session_store.rb @@ -13,7 +13,7 @@ ttl: IdentityConfig.store.session_timeout_in_minutes.minutes, key_prefix: "#{IdentityConfig.store.domain_name}:session:", - url: IdentityConfig.store.redis_url, + client: REDIS_SESSION_POOL_WRAPPER, }, on_session_load_error: SessionEncryptorErrorHandler, serializer: SessionEncryptor.new, diff --git a/lib/identity_config.rb b/lib/identity_config.rb index 191d47d0001..eff7656fb00 100644 --- a/lib/identity_config.rb +++ b/lib/identity_config.rb @@ -322,6 +322,7 @@ def self.build_store(config_map) config.add(:redis_throttle_url) config.add(:redis_url) config.add(:redis_pool_size, type: :integer) + config.add(:redis_session_pool_size, type: :integer) config.add(:redis_throttle_pool_size, type: :integer) config.add(:reg_confirmed_email_max_attempts, type: :integer) config.add(:reg_confirmed_email_window_in_minutes, type: :integer)