Skip to content

Commit 385974b

Browse files
jsandershone
authored andcommitted
Fixes resque#587 - don't share a redis connection between parent and child
1 parent a8ea1ad commit 385974b

File tree

2 files changed

+7
-0
lines changed

2 files changed

+7
-0
lines changed

lib/resque/worker.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,7 @@ def work(interval = 5.0, &block)
140140
Process.wait(@child)
141141
else
142142
procline "Processing #{job.queue} since #{Time.now.to_i}"
143+
redis.client.reconnect # Don't share connection with parent
143144
perform(job, &block)
144145
exit! unless @cant_fork
145146
end

test/worker_test.rb

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -431,4 +431,10 @@ def self.perform
431431
assert_equal queue2, Resque::Failure.all(0)['queue']
432432
assert_equal 1, Resque::Failure.count
433433
end
434+
435+
it "reconnects to redis after fork" do
436+
original_connection = Resque.redis.client.connection.instance_variable_get("@sock")
437+
@worker.work(0)
438+
assert_not_equal original_connection, Resque.redis.client.connection.instance_variable_get("@sock")
439+
end
434440
end

0 commit comments

Comments
 (0)