Class: SidekiqUniqueJobs::Server

Inherits:
Object
  • Object
show all
Includes:
Connection, SidekiqUniqueJobs::Script::Caller
Defined in:
lib/sidekiq_unique_jobs/server.rb

Overview

Server-side lifecycle management for sidekiq-unique-jobs.

Handles startup (migration, metrics, reaper) and shutdown (flush, cleanup).

Author:

  • Mikael Henriksson <mikael@mhenrixon.com>

Constant Summary collapse

DEATH_HANDLER =
(lambda do |job, _ex|
  return unless (digest = job["lock_digest"])

  SidekiqUniqueJobs::Digests.new.delete_by_digest(digest)
end).freeze

Class Attribute Summary collapse

Class Method Summary collapse

Methods included from SidekiqUniqueJobs::Script::Caller

call_script, debug_lua, do_call, extract_args, max_history, normalize_argv, now_f, redis_version

Methods included from Connection

included, #redis

Class Attribute Details

.metricsObject (readonly)

Returns the value of attribute metrics.



20
21
22
# File 'lib/sidekiq_unique_jobs/server.rb', line 20

def metrics
  @metrics
end

Class Method Details

.configure(config) ⇒ Object



22
23
24
25
26
27
28
29
# File 'lib/sidekiq_unique_jobs/server.rb', line 22

def configure(config)
  config.on(:startup)  { start }
  config.on(:shutdown) { stop }

  return unless config.respond_to?(:death_handlers)

  config.death_handlers << DEATH_HANDLER
end

.reap(conn = nil) ⇒ Integer

Run the reaper once (used by tests and manual invocation)

Parameters:

  • conn (Redis, nil) (defaults to: nil)

    optional connection

Returns:

  • (Integer)

    number of stale digests removed



47
48
49
50
51
52
53
# File 'lib/sidekiq_unique_jobs/server.rb', line 47

def reap(conn = nil)
  if conn
    do_reap(conn)
  else
    SidekiqUniqueJobs.redis { |c| do_reap(c) }
  end
end

.startObject



31
32
33
34
35
# File 'lib/sidekiq_unique_jobs/server.rb', line 31

def start
  SidekiqUniqueJobs::UpgradeLocks.call
  start_metrics
  start_reaper
end

.stopObject



37
38
39
40
41
# File 'lib/sidekiq_unique_jobs/server.rb', line 37

def stop
  @reaper_task&.shutdown
  @flush_task&.shutdown
  @metrics&.flush
end