Sha256: 3341f868e12a4b79dbf41a48e83c8052b27882f09d26a96bbdebd935d4d5b818

Contents?: true

Size: 1.07 KB

Versions: 11

Compression:

Stored size: 1.07 KB

Contents

# vim:fileencoding=utf-8

module ResqueAdmin
  module Scheduler
    module SignalHandling
      attr_writer :signal_queue

      def signal_queue
        @signal_queue ||= []
      end

      # For all signals, set the shutdown flag and wait for current
      # poll/enqueing to finish (should be almost instant).  In the
      # case of sleeping, exit immediately.
      def register_signal_handlers
        (Signal.list.keys & %w(INT TERM USR1 USR2 QUIT)).each do |sig|
          trap(sig) do
            signal_queue << sig
            # break sleep in the primary scheduler thread, alowing
            # the signal queue to get processed as soon as possible.
            @th.wakeup if @th && @th.alive?
          end
        end
      end

      def handle_signals
        loop do
          sig = signal_queue.shift
          break unless sig
          log! "Got #{sig} signal"
          case sig
          when 'INT', 'TERM', 'QUIT' then shutdown
          when 'USR1' then print_schedule
          when 'USR2' then reload_schedule!
          end
        end
      end
    end
  end
end

Version data entries

11 entries across 9 versions & 2 rubygems

Version Path
resque_admin-scheduler-1.2.0 lib/resque_admin/scheduler/signal_handling.rb
resque_admin-scheduler-1.1.9 lib/resque_admin/scheduler/signal_handling.rb
resque_admin-scheduler-1.1.8 lib/resque_admin/scheduler/signal_handling.rb
resque_admin-scheduler-1.1.7 lib/resque_admin/scheduler/signal_handling.rb
resque_admin-scheduler-1.0.4 lib/resque_admin/scheduler/signal_handling.rb
resque_admin-scheduler-1.0.3 lib/resque-admin/scheduler/signal_handling.rb
resque_admin-scheduler-1.3.0 lib/resque_admin/scheduler/signal_handling.rb
resque-admin-scheduler-1.3.0 lib/resque_admin/scheduler/signal_handling.rb
resque-admin-scheduler-1.3.0 lib/resque/scheduler/signal_handling.rb
resque-admin-scheduler-4.3.0 lib/resque_admin/scheduler/signal_handling.rb
resque-admin-scheduler-4.3.0 lib/resque/scheduler/signal_handling.rb