Class: Sidekiq::MemoryGuardMiddleware
- Inherits:
-
Object
- Object
- Sidekiq::MemoryGuardMiddleware
- Includes:
- Component, ServerMiddleware
- Defined in:
- lib/sidekiq/memory_guard_middleware.rb
Overview
Gracefully restarts a Sidekiq process after a completed job when its
resident memory remains over the configured limit after a full GC.
Constant Summary collapse
- STATE =
MemoryGuardState.new
Delegated Instance Attributes collapse
-
#reset! ⇒ Object
Alias for Memory_guard_state#reset!.
-
#restart_requested? ⇒ Object
Alias for Memory_guard_state#restart_requested?.
Class Method Summary collapse
-
.record_startup(role:) ⇒ void
Records every process start and completes a pending memory-restart marker left by the previous process for this role.
Instance Method Summary collapse
-
#call { ... } ⇒ Object
The wrapped worker's result.
-
#initialize(options = {}) ⇒ MemoryGuardMiddleware
constructor
A new instance of MemoryGuardMiddleware.
Constructor Details
#initialize(options = {}) ⇒ MemoryGuardMiddleware
Returns a new instance of MemoryGuardMiddleware.
51 52 53 54 55 |
# File 'lib/sidekiq/memory_guard_middleware.rb', line 51 def initialize( = {}) @settings = MemoryGuardSettings.build() @telemetry = MemoryGuardTelemetry.new(role: @settings.role) @restart_tracker = MemoryGuardRestartTracker.new(role: @settings.role, telemetry: @telemetry) end |
Class Method Details
.record_startup(role:) ⇒ void
This method returns an undefined value.
Records every process start and completes a pending memory-restart
marker left by the previous process for this role.
30 31 32 |
# File 'lib/sidekiq/memory_guard_middleware.rb', line 30 def record_startup(role:) MemoryGuardRestartTracker.new(role:).record_startup end |
Instance Method Details
#call { ... } ⇒ Object
Returns the wrapped worker's result.
59 60 61 62 63 |
# File 'lib/sidekiq/memory_guard_middleware.rb', line 59 def call(*) yield ensure safely_restart_if_over_limit end |
#reset! ⇒ Object
Alias for Memory_guard_state#reset!
24 |
# File 'lib/sidekiq/memory_guard_middleware.rb', line 24 delegate :reset!, :restart_requested?, to: :memory_guard_state |
#restart_requested? ⇒ Object
Alias for Memory_guard_state#restart_requested?
24 |
# File 'lib/sidekiq/memory_guard_middleware.rb', line 24 delegate :reset!, :restart_requested?, to: :memory_guard_state |