Skip to content

Commit

Permalink
requeue and remove failed jobs by queue name
Browse files Browse the repository at this point in the history
  • Loading branch information
evanwhalen authored and defunkt committed Sep 23, 2011
1 parent 87970a9 commit ad8c332
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 0 deletions.
22 changes: 22 additions & 0 deletions lib/resque/failure.rb
Expand Up @@ -66,5 +66,27 @@ def self.requeue(index)
def self.remove(index)
backend.remove(index)
end

def self.requeue_queue(queue)
i=0
while job = Resque::Failure.all(i)
if job['queue'] == queue
Resque::Failure.requeue(i)
end
i+=1
end
end

def self.remove_queue(queue)
i=0
while job = Resque::Failure.all(i)
if job['queue'] == queue
# This will remove from the queue so don't increment the index
Resque::Failure.remove(i)
else
i+=1
end
end
end
end
end
20 changes: 20 additions & 0 deletions test/worker_test.rb
Expand Up @@ -352,4 +352,24 @@ def self.exception
test "returns PID of running process" do
assert_equal @worker.to_s.split(":")[1].to_i, @worker.pid
end

test "requeue failed queue" do
queue = 'good_job'
Resque::Failure.create(:exception => Exception.new, :worker => Resque::Worker.new(queue), :queue => queue, :payload => {'class' => GoodJob})
Resque::Failure.create(:exception => Exception.new, :worker => Resque::Worker.new(queue), :queue => 'some_job', :payload => {'class' => SomeJob})
Resque::Failure.requeue_queue(queue)
assert Resque::Failure.all(0).has_key?('retried_at')
assert !Resque::Failure.all(1).has_key?('retried_at')
end

test "remove failed queue" do
queue = 'good_job'
queue2 = 'some_job'
Resque::Failure.create(:exception => Exception.new, :worker => Resque::Worker.new(queue), :queue => queue, :payload => {'class' => GoodJob})
Resque::Failure.create(:exception => Exception.new, :worker => Resque::Worker.new(queue2), :queue => queue2, :payload => {'class' => SomeJob})
Resque::Failure.create(:exception => Exception.new, :worker => Resque::Worker.new(queue), :queue => queue, :payload => {'class' => GoodJob})
Resque::Failure.remove_queue(queue)
assert_equal queue2, Resque::Failure.all(0)['queue']
assert_equal 1, Resque::Failure.count
end
end

0 comments on commit ad8c332

Please sign in to comment.