Skip to content

Commit

Permalink
Fix worker de-registration so it works against latest master.
Browse files Browse the repository at this point in the history
- The script name changed (deregister_worker => deregister_workers)
- Add a better interface (Qless::Client#deregister_workers).
- Deal with the fact that one worker can be talking to many clients.
  • Loading branch information
myronmarston committed Mar 8, 2013
1 parent da10b06 commit 1408ded
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 5 deletions.
7 changes: 6 additions & 1 deletion lib/qless.rb
Expand Up @@ -162,7 +162,7 @@ def initialize(options = {})
@config = Config.new(self)
['cancel', 'config', 'complete', 'depends', 'fail', 'failed', 'get', 'heartbeat', 'jobs', 'peek', 'pop',
'priority', 'put', 'queues', 'recur', 'retry', 'stats', 'tag', 'track', 'workers', 'pause', 'unpause',
'deregister_worker'].each do |f|
'deregister_workers'].each do |f|
self.instance_variable_set("@_#{f}", Qless.lua_script_cache.script_for(f, @redis))
end

Expand Down Expand Up @@ -193,6 +193,11 @@ def untrack(jid)
def tags(offset=0, count=100)
JSON.parse(@_tag.call([], ['top', offset, count]))
end

def deregister_workers(*worker_names)
_deregister_workers.call([], worker_names)
end

private

def assert_minimum_redis_version(version)
Expand Down
11 changes: 9 additions & 2 deletions lib/qless/worker.rb
Expand Up @@ -104,7 +104,7 @@ def work(interval = 5.0)
end
end
ensure
#make sure the worker deregisters on shutdown
# make sure the worker deregisters on shutdown
deregister
end

Expand Down Expand Up @@ -147,8 +147,15 @@ def unpause_processing
end

private

def deregister
@client._deregister_workers.call([],[Qless.worker_name])
uniq_clients.each do |client|
client.deregister_workers(Qless.worker_name)
end
end

def uniq_clients
@uniq_clients ||= @job_reserver.queues.map(&:client).uniq
end

def retryable_exception_classes(job)
Expand Down
2 changes: 1 addition & 1 deletion spec/integration/qless_spec.rb
Expand Up @@ -1704,7 +1704,7 @@ def registered_worker_names
q.pop

expect {
client._deregister_workers.call([], [q.worker_name])
client.deregister_workers(q.worker_name)
}.to change { registered_worker_names }.from([q.worker_name]).to([])
end

Expand Down
2 changes: 1 addition & 1 deletion spec/unit/worker_spec.rb
Expand Up @@ -4,7 +4,7 @@

module Qless
describe Worker do
let(:reserver) { fire_double("Qless::JobReservers::Ordered", description: "job reserver") }
let(:reserver) { fire_double("Qless::JobReservers::Ordered", description: "job reserver", queues: []) }
let(:client ) { stub.as_null_object }

def procline
Expand Down

0 comments on commit 1408ded

Please sign in to comment.