From 263c7f0bccd4821804bb293df3f45f513c1163b6 Mon Sep 17 00:00:00 2001
From: Paco Guzman <pacoguzmanp@gmail.com>
Date: Thu, 22 Sep 2016 08:38:35 +0200
Subject: [PATCH] Use a ConnectionPool for Rails.cache on Sidekiq servers
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

It’s important to remember that connections on ConnectionPool are created
when needed so if modify the objects later to create those connections weird
things could happen

https://gitlab.com/gitlab-com/infrastructure/issues/464#note_15850653
---
 CHANGELOG             | 1 +
 config/application.rb | 4 ++++
 2 files changed, 5 insertions(+)

diff --git a/CHANGELOG b/CHANGELOG
index df93f89a41a..5cd5b12a1e9 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -6,6 +6,7 @@ v 8.13.0 (unreleased)
   - Log LDAP lookup errors and don't swallow unrelated exceptions. !6103 (Markus Koller)
   - Add more tests for calendar contribution (ClemMakesApps)
   - Fix robots.txt disallowing access to groups starting with "s" (Matt Harrison)
+  - Use a ConnectionPool for Rails.cache on Sidekiq servers
   - Only update issuable labels if they have been changed
   - Revoke button in Applications Settings underlines on hover.
   - Update ruby-prof to 0.16.2. !6026 (Elan Ruusamäe)
diff --git a/config/application.rb b/config/application.rb
index 4792f6670a8..8166b6003f6 100644
--- a/config/application.rb
+++ b/config/application.rb
@@ -116,6 +116,10 @@ module Gitlab
     redis_config_hash = Gitlab::Redis.params
     redis_config_hash[:namespace] = Gitlab::Redis::CACHE_NAMESPACE
     redis_config_hash[:expires_in] = 2.weeks # Cache should not grow forever
+    if Sidekiq.server? # threaded context
+      redis_config_hash[:pool_size] = Sidekiq.options[:concurrency] + 5
+      redis_config_hash[:pool_timeout] = 1
+    end
     config.cache_store = :redis_store, redis_config_hash
 
     config.active_record.raise_in_transactional_callbacks = true
-- 
GitLab