Sha256: 74f1f82e0b40affcaeb9cef526bb38d85e344de8caf6e97f05c1efa697284f1e

Contents?: true

Size: 1.09 KB

Versions: 7

Compression:

Stored size: 1.09 KB

Contents

require 'resque'

$HEROKU_WILL_TERMINATE_RESQUE = false

Resque.class_eval do
  def self.heroku_will_terminate?
    !!$HEROKU_WILL_TERMINATE_RESQUE
  end
end

# before bumping resque dependency, check to ensure implementation has not changed
#   https://github.com/resque/resque/blame/v2.0.0/lib/resque/worker.rb#L406
# https://github.com/resque/resque/issues/1559#issuecomment-310908574
Resque::Worker.class_eval do
  def unregister_signal_handlers
    trap('TERM') do
      $HEROKU_WILL_TERMINATE_RESQUE = true

      trap('TERM') do
        log_with_severity :info, "[resque-heroku] received second term signal, throwing term exception"

        trap('TERM') do
          log_with_severity :info, "[resque-heroku] third or more time receiving TERM, ignoring"
        end

        raise Resque::TermException.new("SIGTERM")
      end

      log_with_severity :info, "[resque-heroku] received first term signal from heroku, ignoring"
    end

    trap('INT', 'DEFAULT')

    begin
      trap('QUIT', 'DEFAULT')
      trap('USR1', 'DEFAULT')
      trap('USR2', 'DEFAULT')
    rescue ArgumentError
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
resque-heroku-signals-2.5.0 lib/resque-heroku-signals.rb
resque-heroku-signals-2.4.0 lib/resque-heroku-signals.rb
resque-heroku-signals-2.3.0 lib/resque-heroku-signals.rb
resque-heroku-signals-2.2.1 lib/resque-heroku-signals.rb
resque-heroku-signals-2.2.0 lib/resque-heroku-signals.rb
resque-heroku-signals-2.1.0 lib/resque-heroku-signals.rb
resque-heroku-signals-2.0.0 lib/resque-heroku-signals.rb