Class: Sidekiq::MemoryLogger::Middleware
- Inherits:
-
Object
- Object
- Sidekiq::MemoryLogger::Middleware
- Defined in:
- lib/sidekiq/memory_logger.rb
Instance Method Summary collapse
- #call(worker_instance, job, queue) ⇒ Object
-
#initialize(config = nil) ⇒ Middleware
constructor
A new instance of Middleware.
Constructor Details
#initialize(config = nil) ⇒ Middleware
Returns a new instance of Middleware.
50 51 52 |
# File 'lib/sidekiq/memory_logger.rb', line 50 def initialize(config = nil) @memory_logger_config = config || MemoryLogger.configuration end |
Instance Method Details
#call(worker_instance, job, queue) ⇒ Object
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/sidekiq/memory_logger.rb', line 54 def call(worker_instance, job, queue) return yield if should_skip_queue?(queue) start_mem = GetProcessMem.new.mb start_objects = GC.stat[:total_allocated_objects] begin yield ensure end_mem = GetProcessMem.new.mb end_objects = GC.stat[:total_allocated_objects] memory_diff = end_mem - start_mem objects_diff = end_objects - start_objects begin @memory_logger_config.callback.call(job["wrapped"] || job["class"], queue, memory_diff, objects_diff, job["args"]) rescue => e @memory_logger_config.logger.error("Sidekiq memory logger callback failed: #{e.}") end end end |