diff --git a/lib/sidekiq/cli.rb b/lib/sidekiq/cli.rb index 04e0c074..e311d6b3 100644 --- a/lib/sidekiq/cli.rb +++ b/lib/sidekiq/cli.rb @@ -90,7 +90,7 @@ module Sidekiq rescue Interrupt logger.info 'Shutting down' launcher.stop - fire_event(:shutdown) + fire_event(:shutdown, true) # Explicitly exit so busy Processor threads can't block # process shutdown. exit(0) @@ -125,7 +125,7 @@ module Sidekiq when 'USR1' Sidekiq.logger.info "Received USR1, no longer accepting new work" launcher.manager.async.stop - fire_event(:quiet) + fire_event(:quiet, true) when 'USR2' if Sidekiq.options[:logfile] Sidekiq.logger.info "Received USR2, reopening log file" diff --git a/lib/sidekiq/util.rb b/lib/sidekiq/util.rb index 3f38976d..ae867ab0 100644 --- a/lib/sidekiq/util.rb +++ b/lib/sidekiq/util.rb @@ -39,8 +39,10 @@ module Sidekiq @@identity ||= "#{hostname}:#{$$}:#{process_nonce}" end - def fire_event(event) - Sidekiq.options[:lifecycle_events][event].each do |block| + def fire_event(event, reverse=false) + arr = Sidekiq.options[:lifecycle_events][event] + arr.reverse! if reverse + arr.each do |block| begin block.call rescue => ex