mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
FIX: Reopen sidekiq log files after rotation (#9429)
Unicorn uses the USR1 to indicate that log files should be reopened. This commit implements the same functionality for our forked sidekiq workers: - USR1 is intercepted in the unicorn master, and re-issued to all child processes - USR1 is trapped in the sidekiq processes, and `Unicorn::Util.reopen_logs` is used to re-open log files
This commit is contained in:
@@ -37,6 +37,13 @@ class Demon::Base
|
||||
end
|
||||
end
|
||||
|
||||
def self.kill(signal)
|
||||
return unless @demons
|
||||
@demons.values.each do |demon|
|
||||
demon.kill(signal)
|
||||
end
|
||||
end
|
||||
|
||||
attr_reader :pid, :parent_pid, :started, :index
|
||||
attr_accessor :stop_timeout
|
||||
|
||||
@@ -63,6 +70,10 @@ class Demon::Base
|
||||
end
|
||||
end
|
||||
|
||||
def kill(signal)
|
||||
Process.kill(signal, @pid)
|
||||
end
|
||||
|
||||
def stop_signal
|
||||
"HUP"
|
||||
end
|
||||
|
||||
@@ -34,6 +34,13 @@ class Demon::Sidekiq < ::Demon::Base
|
||||
Sidekiq.logger = nil
|
||||
cli = Sidekiq::CLI.instance
|
||||
|
||||
# Unicorn uses USR1 to indicate that log files have been rotated
|
||||
Signal.trap("USR1") do
|
||||
puts "Sidekiq PID #{Process.pid} reopening logs..."
|
||||
Unicorn::Util.reopen_logs
|
||||
puts "Sidekiq PID #{Process.pid} done reopening logs..."
|
||||
end
|
||||
|
||||
options = ["-c", GlobalSetting.sidekiq_workers.to_s]
|
||||
|
||||
[['critical', 8], ['default', 4], ['low', 2], ['ultra_low', 1]].each do |queue_name, weight|
|
||||
|
||||
Reference in New Issue
Block a user