Skip to content
Snippets Groups Projects
Commit 3dd86b83 authored by Jacob Vosmaer's avatar Jacob Vosmaer
Browse files

Use constants instead of getters

parent 4f9a1406
Branches
Tags
No related merge requests found
module Gitlab module Gitlab
module SidekiqMiddleware module SidekiqMiddleware
class MemoryKiller class MemoryKiller
# Default the RSS limit to 0, meaning the MemoryKiller is disabled
MAX_RSS = (ENV['SIDEKIQ_MEMORY_KILLER_MAX_RSS'] || 0).to_s.to_i
# Give Sidekiq 15 minutes of grace time after exceeding the RSS limit # Give Sidekiq 15 minutes of grace time after exceeding the RSS limit
GRACE_TIME = 15 * 60 GRACE_TIME = (ENV['SIDEKIQ_MEMORY_KILLER_GRACE_TIME'] || 15 * 60).to_s.to_i
# Wait 30 seconds for running jobs to finish during graceful shutdown # Wait 30 seconds for running jobs to finish during graceful shutdown
SHUTDOWN_WAIT = 30 SHUTDOWN_WAIT = (ENV['SIDEKIQ_MEMORY_KILLER_SHUTDOWN_WAIT'] || 30).to_s.to_i
# Create a mutex so that there will be only one thread waiting to shut
# Sidekiq down # Create a mutex used to ensure there will be only one thread waiting to
# shut Sidekiq down
MUTEX = Mutex.new MUTEX = Mutex.new
   
def call(worker, job, queue) def call(worker, job, queue)
yield yield
current_rss = get_rss current_rss = get_rss
   
return unless max_rss > 0 && current_rss > max_rss return unless MAX_RSS > 0 && current_rss > MAX_RSS
   
Tread.new do Tread.new do
# Return if another thread is already waiting to shut Sidekiq down # Return if another thread is already waiting to shut Sidekiq down
return unless MUTEX.try_lock return unless MUTEX.try_lock
   
Sidekiq.logger.warn "current RSS #{current_rss} exceeds maximum RSS "\ Sidekiq.logger.warn "current RSS #{current_rss} exceeds maximum RSS "\
"#{max_rss}" "#{MAX_RSS}"
Sidekiq.logger.warn "spawned thread that will shut down PID "\ Sidekiq.logger.warn "spawned thread that will shut down PID "\
"#{Process.pid} in #{grace_time} seconds" "#{Process.pid} in #{GRACE_TIME} seconds"
sleep(grace_time) sleep(GRACE_TIME)
   
Sidekiq.logger.warn "sending SIGUSR1 to PID #{Process.pid}" Sidekiq.logger.warn "sending SIGUSR1 to PID #{Process.pid}"
Process.kill('SIGUSR1', Process.pid) Process.kill('SIGUSR1', Process.pid)
   
Sidekiq.logger.warn "waiting #{shutdown_wait} seconds before sending "\ Sidekiq.logger.warn "waiting #{SHUTDOWN_WAIT} seconds before sending "\
"SIGTERM to PID #{Process.pid}" "SIGTERM to PID #{Process.pid}"
sleep(shutdown_wait) sleep(SHUTDOWN_WAIT)
   
Sidekiq.logger.warn "sending SIGTERM to PID #{Process.pid}" Sidekiq.logger.warn "sending SIGTERM to PID #{Process.pid}"
Process.kill('SIGTERM', Process.pid) Process.kill('SIGTERM', Process.pid)
Loading
@@ -45,22 +48,6 @@ module Gitlab
Loading
@@ -45,22 +48,6 @@ module Gitlab
   
output.to_i output.to_i
end end
def max_rss
@max_rss ||= ENV['SIDEKIQ_MAX_RSS'].to_s.to_i
end
def shutdown_wait
@graceful_shutdown_wait ||= (
ENV['SIDEKIQ_MEMORY_KILLER_SHUTDOWN_WAIT'] || SHUTDOWN_WAIT
).to_i
end
def grace_time
@grace_time ||= (
ENV['SIDEKIQ_MEMORY_KILLER_GRACE_TIME'] || GRACE_TIME
).to_i
end
end end
end end
end end
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment