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)
unless metrics[:memory_diff] > config.memory_threshold_mb && metrics[:before] > config.ram_before_threshold_mb
return
end
related_model = (job)
job_class = (worker, job)
metadata = {
worker_class: related_model ? "#{job_class} (#{related_model})" : job_class,
queue: queue,
dyno: ENV['DYNO'],
job_id: job['jid'],
job_args: (job)
}
track_memory_usage(metrics[:memory_diff], metrics[:before], metrics[:after],
metadata.merge(execution_time: metrics[:execution_time]), type: :worker)
end
|