Commit a1434ff50b7cc86e1e1a2863366e235da0f77cd7
1 parent
4c800342
Exists in
master
and in
4 other branches
Fix shared Redis connection issue on Passenger
Showing
1 changed file
with
16 additions
and
0 deletions
Show diff stats
| @@ -0,0 +1,16 @@ | @@ -0,0 +1,16 @@ | ||
| 1 | +if defined?(PhusionPassenger) | ||
| 2 | + | ||
| 3 | + # When you're using Passenger with smart-lv2 (default) or smart spawn method, | ||
| 4 | + # Resque doesn't recognize that it has been forked and should re-establish | ||
| 5 | + # Redis connection. You can see this error message in log: | ||
| 6 | + # Redis::InheritedError, Tried to use a connection from a child process | ||
| 7 | + # without reconnecting. You need to reconnect to Redis after forking. | ||
| 8 | + # | ||
| 9 | + # This solution is based on | ||
| 10 | + # https://github.com/redis/redis-rb/wiki/redis-rb-on-Phusion-Passenger | ||
| 11 | + # | ||
| 12 | + PhusionPassenger.on_event(:starting_worker_process) do |forked| | ||
| 13 | + # if we're in smart spawning mode, reconnect to Redis | ||
| 14 | + Resque.redis.client.reconnect if forked | ||
| 15 | + end | ||
| 16 | +end |