Skip to content

Commit

Permalink
fix: интеграция unique и resque-retry(сохраненние числа перезапусков)
Browse files Browse the repository at this point in the history
  • Loading branch information
DmitryBochkarev committed Feb 17, 2017
1 parent abd99e8 commit 1d07743
Showing 1 changed file with 18 additions and 2 deletions.
20 changes: 18 additions & 2 deletions lib/resque/integration/unique.rb
Original file line number Diff line number Diff line change
Expand Up @@ -50,11 +50,27 @@ def scheduled(queue, klass, *args)

# Метод вызывает resque-retry когда ставить отложенное задание
# здесь мы убираем meta_id из аргументов
def retry_args(*args)
args.shift
def retry_args(meta_id, *args)
args
end

# Метод вызывает resque-retry, когда записывает/читает число перезапусков
# - во время работы воркера первым аргументом передается meta_id;
# - во время чтения из вебинтерфейса, meta_id не передается, т.к. она выкидывается во время перепостановки
# джоба(см retry_args);
# - если метод вызывается в пользовательском коде(и @meta_id отсутствует), то meta_id нельзя передавать.
def retry_identifier(*args)
if args.size > 0 && @meta_id.is_a?(String) && @meta_id.length > 0 && @meta_id == args.first
args.shift
end

return if args.empty?

args = [*args[0..-2], args.last.with_indifferent_access] if args.last.is_a?(Hash)

Digest::SHA1.hexdigest(obj_to_string(lock_on[*args]))
end

# Get or set proc returning unique arguments
def lock_on(&block)
if block_given?
Expand Down

0 comments on commit 1d07743

Please sign in to comment.