diff options
author | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2012-12-27 01:23:17 -0800 |
---|---|---|
committer | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2012-12-27 01:23:17 -0800 |
commit | dae56806df563573aa2c5e2be00be57fb12f12d7 (patch) | |
tree | 5b8ed00bc04e0c4fd123a0af7d6da9773dce4ed0 | |
parent | c4536ae587f67db89ab8310a1b16eed269b4d8df (diff) | |
parent | a1434ff50b7cc86e1e1a2863366e235da0f77cd7 (diff) | |
download | gitlab-ce-dae56806df563573aa2c5e2be00be57fb12f12d7.tar.gz |
Merge pull request #2386 from cvut/fix-passenger
Fix shared Redis connection issue on Passenger
-rw-r--r-- | config/initializers/passenger_fix.rb | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/config/initializers/passenger_fix.rb b/config/initializers/passenger_fix.rb new file mode 100644 index 00000000000..3a88eb10a36 --- /dev/null +++ b/config/initializers/passenger_fix.rb @@ -0,0 +1,16 @@ +if defined?(PhusionPassenger) + + # When you're using Passenger with smart-lv2 (default) or smart spawn method, + # Resque doesn't recognize that it has been forked and should re-establish + # Redis connection. You can see this error message in log: + # Redis::InheritedError, Tried to use a connection from a child process + # without reconnecting. You need to reconnect to Redis after forking. + # + # This solution is based on + # https://github.com/redis/redis-rb/wiki/redis-rb-on-Phusion-Passenger + # + PhusionPassenger.on_event(:starting_worker_process) do |forked| + # if we're in smart spawning mode, reconnect to Redis + Resque.redis.client.reconnect if forked + end +end |