Class: MemHealth::JobTrackingMiddleware

Inherits:
Object
  • Object
show all
Includes:
TrackingConcern
Defined in:
lib/mem_health/job_tracking_middleware.rb

Instance Method Summary collapse

Instance Method Details

#call(worker, job, queue, &block) ⇒ Object



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

def call(worker, job, queue, &block)
  return yield unless config.enabled?

  metrics = measure_memory(&block)

  # Track if memory usage is significant
  unless metrics[:memory_diff] > config.memory_threshold_mb && metrics[:before] > config.ram_before_threshold_mb
    return
  end

  related_model = extract_related_model(job)
  job_class = extract_job_class(worker, job)

   = {
    worker_class: related_model ? "#{job_class} (#{related_model})" : job_class,
    queue: queue,
    dyno: ENV['DYNO'],
    job_id: job['jid'],
    job_args: extract_job_args(job)
  }

  track_memory_usage(metrics[:memory_diff], metrics[:before], metrics[:after],
                     .merge(execution_time: metrics[:execution_time]), type: :worker)
end