module SidekiqUniqueJobs::Orphans::ReaperResurrector
Restarts orphan manager if it is considered dead
Constants
- DRIFT_FACTOR
- REAPERS
Public Instance Methods
Source
# File lib/sidekiq_unique_jobs/orphans/reaper_resurrector.rb, line 165 def current_timestamp Time.now.to_i end
Source
# File lib/sidekiq_unique_jobs/orphans/reaper_resurrector.rb, line 161 def drift_reaper_interval reaper_interval + (reaper_interval * DRIFT_FACTOR).to_i end
Source
# File lib/sidekiq_unique_jobs/orphans/reaper_resurrector.rb, line 142 def logging_context if logger_context_hash? { "uniquejobs" => "reaper-resurrector" } else "uniquejobs=reaper-resurrector" end end
A context to use for all log entries
@return [Hash] when logger responds to ‘:with_context` @return [String] when logger does not responds to `:with_context`
Source
# File lib/sidekiq_unique_jobs/orphans/reaper_resurrector.rb, line 65 def orphans_manager SidekiqUniqueJobs::Orphans::Manager end
Returns orphan manager
@return [SidekiqUniqueJobs::Orphans::Manager]
Source
# File lib/sidekiq_unique_jobs/orphans/reaper_resurrector.rb, line 120 def reaper SidekiqUniqueJobs.config.reaper end
@see SidekiqUniqueJobs::Config#reaper
Source
# File lib/sidekiq_unique_jobs/orphans/reaper_resurrector.rb, line 94 def reaper_disabled? !reaper_enabled? end
Checks if reaping is disabled
@see reaper_enabled?
@return [true, false]
Source
# File lib/sidekiq_unique_jobs/orphans/reaper_resurrector.rb, line 103 def reaper_enabled? REAPERS.include?(reaper) end
Checks if reaping is enabled
@return [true, false]
Source
# File lib/sidekiq_unique_jobs/orphans/reaper_resurrector.rb, line 157 def reaper_interval SidekiqUniqueJobs.config.reaper_interval end
Source
# File lib/sidekiq_unique_jobs/orphans/reaper_resurrector.rb, line 111 def reaper_registered? redis do |conn| conn.get(UNIQUE_REAPER).to_i + drift_reaper_interval > current_timestamp end end
Checks if reaper is registered
@return [true, false]
Source
# File lib/sidekiq_unique_jobs/orphans/reaper_resurrector.rb, line 153 def reaper_resurrector_interval SidekiqUniqueJobs.config.reaper_resurrector_interval end
@see SidekiqUniqueJobs::Config#reaper_resurrector_interval
Source
# File lib/sidekiq_unique_jobs/orphans/reaper_resurrector.rb, line 54 def restart_if_dead return if reaper_registered? log_info("Reaper is considered dead. Starting new reaper instance") orphans_manager.start end
Starts new instance of orphan reaper if reaper is considered dead (reaper mutex has not been refreshed lately)
Source
# File lib/sidekiq_unique_jobs/orphans/reaper_resurrector.rb, line 75 def resurrector_disabled? !resurrector_enabled? end
Checks if resurrector is disabled
@see resurrector_enabled?
@return [true, false]
Source
# File lib/sidekiq_unique_jobs/orphans/reaper_resurrector.rb, line 83 def resurrector_enabled? SidekiqUniqueJobs.config.reaper_resurrector_enabled end
Checks if resurrector is enabled
@return [true, false]
Source
# File lib/sidekiq_unique_jobs/orphans/reaper_resurrector.rb, line 33 def run_task log_info("Starting Reaper Resurrector") task.execute task end
Runs reaper resurrector task
@return [SidekiqUniqueJobs::TimerTask]
Source
# File lib/sidekiq_unique_jobs/orphans/reaper_resurrector.rb, line 20 def start return if resurrector_disabled? return if reaper_disabled? with_logging_context do run_task end end
Starts reaper resurrector that watches orphans reaper
@return [SidekiqUniqueJobs::TimerTask] the task that was started
Source
# File lib/sidekiq_unique_jobs/orphans/reaper_resurrector.rb, line 43 def task SidekiqUniqueJobs::TimerTask.new(timer_task_options) do with_logging_context do restart_if_dead end end end
The task that runs the resurrector
@return [SidekiqUniqueJobs::TimerTask]
Source
# File lib/sidekiq_unique_jobs/orphans/reaper_resurrector.rb, line 130 def timer_task_options { run_now: false, execution_interval: reaper_resurrector_interval } end
Arguments passed on to the timer task
@return [Hash]