Class: HeapScope::SidekiqMiddleware

Inherits:
Object
  • Object
show all
Defined in:
lib/heapscope/sidekiq_middleware.rb

Overview

Optional Sidekiq server middleware. Does not require Sidekiq at load time.

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ SidekiqMiddleware

Returns a new instance of SidekiqMiddleware.



6
7
8
9
10
11
# File 'lib/heapscope/sidekiq_middleware.rb', line 6

def initialize(options = {})
  @sample_rate = options.fetch(:sample_rate, 0.05)
  @force_gc = options.fetch(:force_gc, false)
  @mode = options.fetch(:mode, :lightweight)
  @on_report = options[:on_report]
end

Instance Method Details

#call(worker, job, queue) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/heapscope/sidekiq_middleware.rb', line 13

def call(worker, job, queue)
  return yield if @sample_rate <= 0 || rand > @sample_rate

  result = nil
  report = HeapScope.measure(
    force_gc: @force_gc,
    mode: @mode,
    metadata: {
      kind: "sidekiq_job",
      worker: worker.class.name,
      queue: queue,
      jid: job["jid"],
      pid: Process.pid
    }
  ) do
    result = yield
    true
  end

  @on_report&.call(report)
  result
end