class SidekiqRobustJob::UniquenessStrategy::Base
Attributes
jobs_repository[R]
lock_ttl_proc[R]
locker[R]
memory_monitor[R]
Public Class Methods
new(locker:, lock_ttl_proc:, jobs_repository:, memory_monitor:)
click to toggle source
# File lib/sidekiq_robust_job/uniqueness_strategy/base.rb, line 7 def initialize(locker:, lock_ttl_proc:, jobs_repository:, memory_monitor:) @locker = locker @lock_ttl_proc = lock_ttl_proc @jobs_repository = jobs_repository @memory_monitor = memory_monitor end
Public Instance Methods
execute(_job)
click to toggle source
# File lib/sidekiq_robust_job/uniqueness_strategy/base.rb, line 14 def execute(_job) raise "implement me" end
Private Instance Methods
drop_unprocessed_jobs(job)
click to toggle source
# File lib/sidekiq_robust_job/uniqueness_strategy/base.rb, line 33 def drop_unprocessed_jobs(job) jobs_repository.drop_unprocessed_jobs_by_digest( dropped_by_job_id: job.id, digest: job.digest, exclude_id: job.id ) end
lock(job) { |locked| ... }
click to toggle source
# File lib/sidekiq_robust_job/uniqueness_strategy/base.rb, line 41 def lock(job) locker.lock(job.digest, lock_ttl_proc.call(job)) { |locked| yield locked } end
perform_job_and_finalize(job)
click to toggle source
# File lib/sidekiq_robust_job/uniqueness_strategy/base.rb, line 20 def perform_job_and_finalize(job) begin job.call rescue StandardError => error job.failed(error) jobs_repository.save(job) raise end job.completed(memory_monitor: memory_monitor) jobs_repository.save(job) end