Module: SidekiqPoisonPillRemedy

Defined in:
lib/version.rb,
lib/sidekiq_poison_pill_remedy.rb

Defined Under Namespace

Modules: Version

Constant Summary collapse

VERSION =
"0.1.0"

Class Method Summary collapse

Class Method Details

.capture_sentry_message(message, level:, job_item:) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
# File 'lib/sidekiq_poison_pill_remedy.rb', line 28

def self.capture_sentry_message(message, level:, job_item:)
  if defined?(Sentry)
    Sentry.capture_message(
      message,
      level:,
      extra: { job_item: }
    )
  end

  Sidekiq.logger.fatal(message)
end

.remedyObject



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/sidekiq_poison_pill_remedy.rb', line 4

def self.remedy
  proc do |_jobstr, pill|
    next unless pill

    job = Sidekiq::DeadSet.new.find_job(pill.jid)

    if job.queue == "poison_pill"
      capture_sentry_message(
        "#{job.klass} failed in the `#{job.queue}`, this means that it has to be urgently optimized on memory usage",
        level: :critical,
        job_item: job.item
      )
    else
      capture_sentry_message(
        "#{job.klass} was marked as `poison pill`, please create the job memory optimizations ticket timely",
        level: :warning,
        job_item: job.item
      )
      job.klass.constantize.set(queue: :poison_pill).perform_async(*job.args)
      job.delete
    end
  end
end