diff --git a/config/initializers/session_store.rb b/config/initializers/session_store.rb index a1c3ab5bbca..47c1fd80942 100644 --- a/config/initializers/session_store.rb +++ b/config/initializers/session_store.rb @@ -16,5 +16,6 @@ client: REDIS_SESSION_POOL_WRAPPER, }, on_session_load_error: SessionEncryptorErrorHandler, + on_redis_down: proc { |error, _env, _sid| raise error }, serializer: SessionEncryptor.new, ) diff --git a/spec/requests/redis_down_spec.rb b/spec/requests/redis_down_spec.rb new file mode 100644 index 00000000000..4bb09437441 --- /dev/null +++ b/spec/requests/redis_down_spec.rb @@ -0,0 +1,12 @@ +require 'rails_helper' + +RSpec.describe 'redis down session error handling' do + context 'with bad Redis connection' do + it 'fails loudly' do + allow(REDIS_SESSION_POOL_WRAPPER).to receive(:setex).and_raise(Redis::CannotConnectError) + expect do + get forgot_password_path + end.to raise_error(Redis::CannotConnectError) + end + end +end